excel操作 - xlwings模块
xlwings模块介绍
xlwings
模块是一个支持excel
(.xls
.xlsx
)读写操作的第三库,操作简单,功能众多- 模块安装 :
pip install xlwings
- 官方文档 :https://docs.xlwings.org/en/stable/installation.html
- 学习讲解视频 :https://www.bilibili.com/video/BV1TV411r7mt?spm_id_from=333.999.0.0
- 工作逻辑图
读写的基本操作
写入
- 写入基本操作方法,流程
- 建立与工作簿的连接:
import xlwings as xw
wb = xw.Book() # this will create a new workbook
wb = xw.Book('FileName.xlsx') # connect to a file that is open or in the current working directory
wb = xw.Book(r'C:\path\to\file.xlsx') # on Windows: use raw strings to escape backslashes
import xlwings as xw
app = xw.App() # 创建应用
# 参数1 : add_book = False, 仅打开一个
# 参数2 :visible = False , 关闭操作过程
wb = app.books.add() # 添加工作簿
sht = wb.sheets["sheet1"] # 工作表
sht.range("a1").value = "QWQ" # 范围写值
wb.save("demon.xlsx") # 保存文件
wb.close() # 文件关闭
app.quit() # 退出应用
- 写入常见方法
import xlwings as xw
app = xw.App(add_book = False) # 创建应用
wb = app.books.add() # 添加工作簿
sht = wb.sheets["sheet1"] # 工作表
# 写入方法 :
# (1) 指定单元格写入
sht.range("a1").value = "QWQ"
# (2) 一行写入
sht.range("b1").value = [1,2,3,4]
sht.range("b2:e2").value = [1,2,3,4]
# (3) 一列写入
sht.range("a2").options(transpose=True).value = ["LNL","HJW","LYF"]
# (4) 插入行列
sht.range("b3").value = [[5,6,7,8],[5,6,7,8],]
wb.save("demon.xlsx") # 保存文件
读取
- 读取方法相对比写入更加简单,读取上述所示表格中的内容
import xlwings as xw
app = xw.App(add_book = False) # 创建应用
wb = app.books.open("demon.xlsx") # 打开工作簿
sht = wb.sheets["sheet1"] # 工作表
# 读取方法 :
# (1) 读取指定的单元格
print(sht.range("a1").value)
# (2) 读取一行
print(sht.range("b1:e1").value)
# (3) 读取一列
print(sht.range("a2:a4").value)
# (4) 读取行列
print(sht.range("b2:e4").value)
wb.save("demon.xlsx") # 保存文件
wb.close()
app.quit()
xlwings库总结
APP 操作方法
- 一个App对应于一个excel实例,多个excel程序集合用Apps表示
- APP操作方法总结 (
import xlwings as xw
):
方法作用 | 使用示例 | 说明 |
---|---|---|
查看Apps包含的所有App | Apps = xw.apps | 对应多个excel程序集合 |
返回App总数 | count = xw.apps.count | excel程序集合数量 |
查看所有的PID | keys = xw.apps.keys() | 每个App对应一个PID值,可以看作是数字编号,用来识别不同的App |
创建App | app=xw.App() | 打开Excel程序并且自动创建一个工作薄,参数:visible 用来设置程序是否可见,True表示可见(默认),Flase不可见;add_book 用来设置是否自动创建工作簿,True表示自动创建(默认),False不创建 |
查看PID | pid = app.pid | 查看创建的app的PID |
引用App | app = xw.apps[pid_index] | pid_index为创建打开的app的PID值 |
返回当前活动App | app = xw.apps.active | 得到当前操作的app |
激活App | app.activate() | 激活将要操作的app |
退出App | app.kill() | 通过杀掉进程,强制Excel app退出 |
退出App | app.quit() | 退出excel程序,不保存任何工作簿 |
计算工作簿里的公式 | app.calculate() | 重新计算一遍所有工作簿里的公式 |
App是否可见设置 | app.visible = True | 设置App为可见 |
Book 操作方法
- Book对应excel工作薄,就是一个excel文件
- Book操作方法总结
方法作用 | 使用示例 | 说明 |
---|---|---|
App包含的所有的Book | books = xw.books | 当前活动App的工作簿集合 |
App包含的Book | books = app.books | 指定App的所有工作簿的集合 |
新建工作薄 | wb = app.books.add() | 在当前App下新建一个Book |
新建工作薄 | wb = xw.Book() | 创建一个新的App,并在新App中新建一个Book |
打开工作薄 | wb = app.books.open(‘test.xlsx’) wb = xw.Book(‘test.xlsx’) | 打开代码所在路径下的文件 |
打开工作薄 | wb = app.books.open(r’文件绝对路径’) wb = xw.Book(r’文件绝对路径’) | 打开绝对路径下的文件 |
引用工作薄 | wb = app.books(‘test.xlsx’) wb = xw.Book(‘test.xlsx’) | 告诉程序要操作的对象 |
激活工作薄 | wb.activate() wb.activate(steal_focus=True) | steal_focus=True, 则把窗口显示到最上层,并且把焦点从Python切换到Excel |
保存工作簿 | wb.save() wb.save(r’D:\test.csv’) | 默认保存在工作薄所在的路径 |
清除内存 | app.quit() | 清理一下Excel程序 |
关闭工作簿 | wb.close() | 直接关闭工作簿,不会进行保存 |
工作簿路径 | path = wb.fullname | 获取工作簿的绝度路径 |
工作簿名称 | name = wb.name | 获取工作薄名称(带扩展名) |
Sheet 操作方法
方法作用 | 使用示例 | 说明 |
---|---|---|
查看所有工作表 | sheets = xw.sheets sheets = wb.sheets | 工作簿包含的所有Sheet,xw : 当前活动工作薄,wb : 指定工作薄 |
新建工作表 | sht = wb.sheets.add(‘test’,after=‘sheet2’) | 参数1为工作表名称;参数2为插入位置,可选before或者after |
引用工作表 | sht = wb.sheets(‘sheet1’) sht = wb.sheets(1) | 引用即将操作的工作表 |
查看当前工作表 | sht = xw.sheets.active | 返回当前活动工作表 |
激活 | sht.activate() | 激活工作表 |
清除内容格式 | sht.clear() | 清除工作表所有内容和格式 |
清除内容 | sht.clear_contents() | 清除工作表的所有内容但是保留原有格式 |
删除工作表 | sht.delete() | 可删除隐藏的工作表,但不能删除深度隐藏的工作表 |
自动调整行高列宽 | sht.autofit(‘c’) | 行自适应,用 rows 或 r;列自适应,用 columns 或 c;同时做行和列的自适应,不需要参数 |
选定工作表 | sht.select() | 只能在活动工作簿中选择 |
工作表名称 | name = sht.name | 返回工作表名称 |
修改工作表名称 | sht.name = ‘rename’ | 重命名工作表名称 |
查看索引值 | index = sht.index | 返回工作表的索引值 |
range 操作方法
方法作用 | 使用示例 | 说明 |
---|---|---|
引用单元格区域 | sht.range(“a1”) | 引用a1单元格 |
引用行区域 | sht.range(“a1:e1”) | 引用a1到e1一行单元格 |
引用列区域 | sht.range(“a1:a5”) | 引用a1到a5一列单元格 |
引用区域 | sht.range(“a1:d5”) | 引用a1到d5的单元格 |
获取单元格内容 | sht.range(“a1”).value | 获取a1单元格内容 |
单元格赋值 | sht.range(“a1”).value = value | a1单元格内容赋值 |
单元格行高列宽 | sht.range(“a1”).row_height sht.range(“a1”).column_width | row_height 行高,column_width 列宽 |
背景色 | sht.range(“a1”).color | 单元格背景色 |
感谢阅读 若有错误 敬请见谅 !!!