本篇博客继续为大家带来 Python 操作 Excel 文件的相关知识点,核心涉及的模块为 xlwings
。首先依旧是模块安装环节
新建工作簿
import xlwings as xw
app = xw.App(visible=True,add_book=False)
# 新建工作簿
wb = app.books.add()
print(wb)
复制代码
默认打开电脑上的 office excel 软件。
打开已有工作簿
import xlwings as xw
app = xw.App(visible=True,add_book=False)
wb = app.books.open('测试表格.xlsx')
print(wb)
复制代码
第二种方法是
import xlwings as xw
wb = 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)
复制代码
输出如下内容
姓名
班级
年龄
橡皮擦
Python
18.0
打老虎
PHP
20.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 xw
app = 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 xw
app = 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>我啦。
评论