安装:pip install xlwings

基本操作:

xlwings的特色:

  • xlwings能够非常方便的读写Excel文件中的数据,并且能够进行单元格格式的修改
  • 可以和matplotlib以及pandas无缝连接
  • 可以调用Excel文件中VBA写好的程序,也可以让VBA调用用Python写的程序。
  • 开源免费,一直在更新
  • 【能读出公式计算的值】

新建工作簿:

import xlwings as xw
app = xw.App(visible=True,add_book=False) #创建应用
#visible=True 显示Excel工作簿;False 不显示工作簿
#add_book=False 不再新建一个工作簿;True 另外再新建一个工作簿
wb = app.books.add() #新建工作簿
sh1=xw.books.active  #引用活动工作薄
wb.activate()   #激活为当前工作簿

打开已有工作簿:

方式一:

import xlwings as xw
app = xw.App(visible=True,add_book=False)
wb = app.books.open('D:\sample.xlsx') #读入已有工作簿

方式二:

import xlwings as xw
wb = xw.Book('D:\sample.xlsx') #读入已有工作簿
#工作簿不显示

保存工作簿:

import xlwings as xw
wb = xw.Book('D:\sample.xlsx')
wb.save('D:\samplelm.xlsx') #保存工作簿

参数可以省略:工作簿的原路径或脚本所在的路径

退出和关闭:

import xlwings as xw
app = xw.App(visible=True,add_book=False)
wb = app.books.open('D:\sample.xlsx')
wb.close() #关闭工作簿(程序不能编辑了)----显示的文件不关闭
app.quit() #退出应用---显示的文件也关闭

工作表操作:

import xlwings as xw
app = xw.App(visible=True,add_book=False)
wb = app.books.open('D:\sample.xlsx')
sht = wb.sheets[0] #引用工作表
#参数:工作表序号
sht1 = wb.sheets['物理'] #引用工作表
#参数:工作表名称
sht=xw.sheets.active #引用活动sheet print(sht)
print(sht1)
wb.close()
app.quit()
sht.clear()  # 清除sheet的内容和格式
a=sht.name  #返回表格名称
sht.delete    # 删除sheet----[没有删除啊 ???]

单元格操作:

import xlwings as xw
app = xw.App(visible=True,add_book=False)
wb = app.books.open('D:\sample.xlsx')
sht = wb.sheets[0] rng = sht.range('a1') #引用单元格---方式一
#<Range [sample.xlsx]Sheet!$A$1>
#参数:可以大写,可以小写
rng = sht['b1'] #引用单元格---方式二
rng = sht[0,0] #引用单元格---方式三--第一行的第一列即a1
rng=xw.Range('c1') #引用活动sheet上的单元格
#注意Range首字母大写 print(rng)
wb.close()
app.quit()
rng = sht.range('a1:a5')  #引用区域---方式一
#<Range [sample.xlsx]Sheet!$A$1:$A$5>
rng = sht['a1:b5'] #引用区域---方式二
#<Range [sample.xlsx]Sheet!$A$1:$B$5>
#rng = sht[:5,0] #引用区域---方式三---????
rng = sht.range('a1')
rng.value=10 #单元格赋值
rng = sht.range('b1')
rng.value='abcd' #单元格赋值
sht.range('c1').value = [1,2,3,4] #按行插入
#从单元格c1开始,按行依次插入数据
sht.range('a1:d4').value = [10,20,30,40] #指定区域插入数据---按行

sht.range('a2').options(transpose=True).value = [5, 6, 7, 8] #按列插入

#从单元格a2开始,按列依次插入数据
#既然默认的是按行写入,我们就把它倒过来嘛(transpose),单词要打对,如果你打错单词,它不会报错,而会按默认的行来写入
sht.range('a6').expand('table').value = [['a','b','c'],['d','e','f'],['g','h','i']] #区域赋值
#从单元格a6开始赋值
#['a','b','c'] 是一行;['d','e','f']是一行
L=sht.range('a1:d4').value  #读取A1:D4区域的值

原表格数据:

返回值:

返回值是列表,每一行是一个列表

返回的数值默认是浮点数

rng=sht['d2']
a=rng.value #返回指定单元格的值
rng = sht.range('a1')
rng.add_hyperlink(r'www.baidu.com','百度','提示:点击即链接到百度') # 指定单元格加入超链接
a=rng.hyperlink #获得range的超链接
#http://www.baidu.com/
rng = sht.range('b6')
rng.formula='=SUM(B1:B5)' #输入公式
a=rng.formula #获取公式
#=SUM(B1:B5)
a=rng.get_address(row_absolute=True, column_absolute=True,include_sheetname=False, external=False) # 获得单元格的绝对地址
# $B$6

其它操作:

a=wb.fullname  #返回工作簿的绝对路径
#D:\sample.xlsx
a=wb.name #返回工作簿的名称
#sample.xlsx
sht.activate()  # 激活sheet为活动工作表
sht = wb.sheets[0]
rng = sht.range('a1')
a=rng.address #取得当前range的地址--$A$1
rng = sht.range('a1:c1')
a=rng.address #取得当前range的地址--$A$1:$C$1
a=rng.get_address() #与rng.address相同
rng.clear_contents() # 清除range的内容
rng.clear() # 清除格式和内容
sht = wb.sheets[0]
rng = sht.range('a1')
rng.color=(255,0,0) # 设置range的背景颜色
rng = sht.range('b1')
rng.color=(0,0,255)
a = rng.color # 取得range的背景色,以元组形式返回RGB值
#(255, 0, 0)
rng.color=None # 清除range的背景色
sht = wb.sheets[0]
rng = sht.range('c2:g4')
a=rng.column #获得range的第一列列标
#从A列是1
a=rng.count #返回range中单元格的格数
a=rng.row  # 返回range的第一行行标
rng = sht.range('b2:g4')
a=rng.last_cell #获得range中右下角最后一个单元格
#<Range [sample.xlsx]Sheet!$G$4>
rng = sht.range('b6:c1')
a=rng.width # 返回range的总宽度
rng = sht.range('b6')
a=rng.column_width # 获得列宽
sht = wb.sheets[0]
rng = sht.range('b2:g4')
a=rng.row_height # 行的高度,所有行一样高返回行高,不一样返回None
a=rng.height # 返回range的总高度
a=rng.shape # 返回range的行数和列数---(3, 6)
a=rng.sheet # 返回range所在的sheet
#<Sheet [sample.xlsx]Sheet>
a=rng.rows #返回range的所有行
for i in a:
print(i)
#<Range [sample.xlsx]Sheet!$B$2:$G$2>
#<Range [sample.xlsx]Sheet!$B$3:$G$3>
#<Range [sample.xlsx]Sheet!$B$4:$G$4>
a=rng.rows[0] # range的第一行
#<Range [sample.xlsx]Sheet!$B$2:$G$2>
a=rng.rows.count # range的总行数
a=rng.columns # 返回range的所有列
for i in a:
print(i)
#<Range [sample.xlsx]Sheet!$C$2:$C$4>
#<Range [sample.xlsx]Sheet!$D$2:$D$4>
#<Range [sample.xlsx]Sheet!$E$2:$E$4>
#<Range [sample.xlsx]Sheet!$F$2:$F$4>
#<Range [sample.xlsx]Sheet!$G$2:$G$4>
rng = sht.range('b2:g4')
a=rng.columns[0] # 返回range的第一列
#<Range [sample.xlsx]Sheet!$B$2:$B$4>
a=rng.columns.count # 返回range的列数
rng.autofit() # 所有range的大小自适应
rng.columns.autofit() # 所有列宽度自适应
rng.rows.autofit() # 所有行高自适应

python--Excel模块xlwings的更多相关文章

  1. python中常⽤的excel模块库

    python中常用的excel模块库&安装方法 openpyxl openpyxl是⼀个Python库,用于读取/写⼊Excel 2010 xlsx / xlsm / xltx / xltm⽂ ...

  2. python 写 excel 模块 : xlwt

    主要来自:[ python中使用xlrd.xlwt操作excel表格详解 ] 为了方便阅读, 我将原文两个模块拆分为两篇博文: [ python 读 excel 模块: xlrd ] [ python ...

  3. python 读 excel 模块: xlrd

    主要来自:[ python中使用xlrd.xlwt操作excel表格详解 ] 为了方便阅读, 我将原文两个模块拆分为两篇博文: [ python 读 excel 模块: xlrd ] [ python ...

  4. python自动化--模块操作之re、MySQL、Excel

    一.python自有模块正则 import re # re.match只匹配字符串的开始,如果字符串开始不符合正则表达式,则匹配失败,函数返回None print(re.match("www ...

  5. python xlrd 模块(获取Excel表中数据)

    python xlrd 模块(获取Excel表中数据) 一.安装xlrd模块   到python官网下载http://pypi.python.org/pypi/xlrd模块安装,前提是已经安装了pyt ...

  6. Python(五)模块

    本章内容: 模块介绍 time & datetime random os sys json & picle hashlib XML requests ConfigParser logg ...

  7. Python CSV模块简介

    Table of Contents 1. CSV 1.1. 简介 1.2. 字典方式地读写 1.3. 其它 2. 参考资料 CSV csv文件格式是一种通用的电子表格和数据库导入导出格式.最近我调用R ...

  8. Python win32com模块 合并文件夹内多个docx文件为一个docx

    Python win32com模块 合并文件夹内多个docx文件为一个docx #!/usr/bin/env python # -*- coding: utf-8 -*- from win32com. ...

  9. Python标准模块--threading

    1 模块简介 threading模块在Python1.5.2中首次引入,是低级thread模块的一个增强版.threading模块让线程使用起来更加容易,允许程序同一时间运行多个操作. 不过请注意,P ...

  10. Python的模块引用和查找路径

    模块间相互独立相互引用是任何一种编程语言的基础能力.对于“模块”这个词在各种编程语言中或许是不同的,但我们可以简单认为一个程序文件是一个模块,文件里包含了类或者方法的定义.对于编译型的语言,比如C#中 ...

随机推荐

  1. 二 MyBatis 从入门到进阶 2 Maven 入门

    1 Maven 的使用 1.1 本地仓库与中央仓库 本地仓库:Window \ Preferences \ Maven \ User Settings \ Local Repository 中央仓库: ...

  2. python 实现 灰色预测 GM(1,1)模型 灰色系统 预测 灰色预测公式推导

    来源公式推导连接 https://blog.csdn.net/qq_36387683/article/details/88554434 关键词:灰色预测 python 实现 灰色预测 GM(1,1)模 ...

  3. flask_alembic操作

    HOSTNAME = '127.0.0.1' PORT = 3306 DATABASE = 'first_sqlalchemy_demo' USERNAME = 'root' PASSWORD = ' ...

  4. 字符串转 Boolean 的正确方式

    String s1 = "false"; String s2 = "true"; String s3 = "fAlSe"; String s ...

  5. Durable NAND flash memory management

    词条积累 1.NAND flash memory http://www.searchstorage.com.cn/whatis/word_6052.htm http://baike.baidu.com ...

  6. 搭建本地parcel仓库

    参考:https://www.cloudera.com/documentation/enterprise/6/6.2/topics/cm_ig_create_local_parcel_repo.htm ...

  7. PTA(Basic Level)1077.互评成绩计算

    在浙大的计算机专业课中,经常有互评分组报告这个环节.一个组上台介绍自己的工作,其他组在台下为其表现评分.最后这个组的互评成绩是这样计算的:所有其他组的评分中,去掉一个最高分和一个最低分,剩下的分数取平 ...

  8. ORA-00911: invalid character解决方法

    今天在搭建VLS系统后,登录系统测试时发现点击菜单提示错误“ORA-00911:???”.网上很多是因为语句中带分号导致的,但是这次是点开菜单就报错,怀疑是字符集设置的问题. 参考网上的解决方案,添加 ...

  9. 设计模式:策略模式(Stratege)

    首先我们需要知道策略模式与状态模式是如此的相似,就犹如一对双胞胎一样.只不过状态模式是通过改变对象内部的状态来帮助对象控制自己的行为,而策略模式则是围绕可以互换的算法来创建成功业务的.两者都可用于解决 ...

  10. python-bioInfo-codes-2

    1. _tkinter.TclError: no display name and no $DISPLAY environment variable 解决方案: import matplotlibma ...