本篇博客继续为大家带来 Python 操作 Excel 文件的相关知识点,核心涉及的模块为 xlwings 。首先依旧是模块安装环节
新建工作簿
import xlwings as xwapp = xw.App(visible=True,add_book=False)# 新建工作簿 wb = app.books.add()print(wb)
复制代码
默认打开电脑上的 office excel 软件。
打开已有工作簿
import xlwings as xwapp = xw.App(visible=True,add_book=False)wb = app.books.open('测试表格.xlsx')print(wb)
复制代码
第二种方法是
import xlwings as xwwb = xw.Book('测试表格.xlsx')
复制代码
保存工作簿,退出 工作簿,退出 Excel
wb.save('测试表格2.xlsx')wb.close()app.quit()
复制代码
操作 sheet
新建 sheet,表对象
删除 sheet
wb.sheets["mySheet"].delete()
复制代码
查看当前表格名
清空整张表格的内容和格式
重命名表格 sheet
wb.sheets[1].name= "修改名称"
复制代码
激活指定的 sheet
wb.sheets["mySheet"].activate()
复制代码
操作单元格
首先选中对应的 Sheet,然后进行实际操作,例如获取 A1 列数据
import xlwings as xw# 设置表格不可见app = xw.App(visible=False,add_book=False)wb = app.books.open('测试表格.xlsx')
sheet = wb.sheets["测试"]a1 = sheet.range('a1')for cell in a1: print(cell.value)
复制代码
输出内容如下所示,对应匹配可以查看下图内容。
参考上述内容,可以读取一下 A1~C3 区域内容。
import xlwings as xw# 设置表格不可见app = xw.App(visible=False,add_book=False)wb = app.books.open('测试表格.xlsx')
sheet = wb.sheets["测试"]a1 = sheet.range('A1:C3')for cell in a1: print(cell.value)
复制代码
输出如下内容
姓名班级年龄橡皮擦Python18.0打老虎PHP20.0
复制代码
注意,由于上述代码没有关闭文件内容,所以在进程中会出现多个 Excel 进程,并且导致文件不可写。
写入数据
单个单元格写入
import xlwings as xw# 设置表格不可见app = xw.App(visible=True,add_book=False)wb = app.books.open('测试表格.xlsx')
sheet = wb.sheets["测试"]a1 = sheet.range('A1')a1.value = "橡皮擦CA"
wb.save('测试表格.xlsx')wb.close()app.quit()
复制代码
如果希望写入 A1~D1 数据,可以直接用列表进行复制。
sht.range('A1:D1').value = [1,2,3,4]
复制代码
如果希望在 A2~A5 输入一列数据,参考下述代码,但是得到的并不是理想内容,得到的是一行数据。
import xlwings as xwapp = xw.App(visible=True,add_book=False)wb = app.books.open('测试表格.xlsx')
sheet = wb.sheets["mySheet"]
sheet.range('A2:A5').value = [5,6,7,8] # 此时会从 A1 ~ A5 输入
wb.save('测试表格.xlsx')wb.close()app.quit()
复制代码
修改次内容的办法如下
import xlwings as xwapp = xw.App(visible=True,add_book=False)wb = app.books.open('测试表格.xlsx')
sheet = wb.sheets["mySheet"]
# sheet.range('A2:A5').value = [5,6,7,8] # 此时会从 A2 ~ D5 输入sheet.range('A2').options(transpose=True).value = [5,6,7,8]
wb.save('测试表格.xlsx')wb.close()app.quit()
复制代码
写入表格
代码如下所示
sheet.range('A1').expand('table').value = [['a','b','c'],['d','e','f'],['g','h','i']]
复制代码
其它操作,例如修改单元格背景色
rng = sheet.range('A1')rng.color=(255,0,0) # 设置range的背景颜色
复制代码
获取 range 的总行数
rng = sheet.range('A1:A6')a = rng.rows.count # range的总行数print(a)
复制代码
记录时间
2022 年度 Flag,写作的 <font color=red>576</font> / 1024 篇。可以<font color=#04a9f4>关注</font>我,<font color=#04a9f4>点赞</font>我、<font color=#04a9f4>评论</font>我、<font color=#04a9f4>收藏</font>我啦。
评论