【首发】Python 操作 Excel,从 xlwings 模块开始【月更第2篇】

举报
梦想橡皮擦 发表于 2022/03/02 14:34:35 2022/03/02
2.3k+ 0 0
【摘要】 本篇博客继续为大家带来 Python 操作 Excel 文件的相关知识点,核心涉及的模块为 xlwings。首先依旧是模块安装环节pip install xlwings 新建工作簿import xlwings as xwapp = xw.App(visible=True,add_book=False)# 新建工作簿 wb = app.books.add()print(wb)默认打开电脑上的 ...

本篇博客继续为大家带来 Python 操作 Excel 文件的相关知识点,核心涉及的模块为 xlwings
首先依旧是模块安装环节

pip install 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,表对象

wb.sheets.add("mySheet")

删除sheet

wb.sheets["mySheet"].delete()

查看当前表格名

wb.sheets[1].name

清空整张表格的内容和格式

wb.sheets[1].clear()

重命名表格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)

输出内容如下所示,对应匹配可以查看下图内容。

姓名
橡皮擦
打老虎
None
None

参考上述内容,可以读取一下 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)
【版权声明】本文为华为云社区用户原创内容,未经允许不得转载,如需转载请自行联系原作者进行授权。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

作者其他文章

评论(0

抱歉,系统识别当前为高风险访问,暂不支持该操作

    全部回复

    上滑加载中

    设置昵称

    在此一键设置昵称,即可参与社区互动!

    *长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

    *长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。