在Python操作Excel的模块中,必须要推荐xlwings。
要想学好、会用xlwings,对于常规的API要熟悉起来。
先发下xlwings英文版的介绍文档链接,英语大神们可以直接去那里汲取营养:
https://docs.xlwings.org/en/stable/
本文攫取其中的常规API,和大家分享下。
一、xlwings和Excel的对应关系
二、每段程序的Title
import xlwings as xw
import os
app = xw.App(visible = False, add_book = False)
三、操作Excel工作簿的API
1、打开Excel工作簿
excel_path = r'E:\Andy\Data Source\xlwings\Make Excel Fly\Test.xlsx'
wb = app.books.open(excel_path)
wb = xw.Book(excel_path)
2、新建Excel工作簿
wb_new = app.books.add()
3、保存Excel工作簿
wb.save()
wb_new.save(r'E:\Andy\Data Source\xlwings\Make Excel Fly\wb_new.xlsx')
4、关闭Excel工作簿
wb.close()
5、退出Excel程序
app.quit()
6、返回Excel工作簿的名称
wb.name
7、返回Excel工作簿的绝对路径
wb.fullname
8、强制关闭Excel程序
for wb in xw.apps.keys():
wb = 'taskkill/pid ' + str(wb) + ' -t -f'
os.system(wb)
四、操作Excel工作表的API
1、打开Excel工作表
ws = wb.sheets['Sheet1']
ws = wb.sheets[0]
ws = wb.sheets(1)
2、新建Excel工作表
wb.sheets.add(name='Add', after='Sheet1')
3、删除Excel工作表
wb.sheets['Add'].delete()
4、复制Excel工作表
sheet_copy = wb.sheets[0]
sheet_copy.copy(after = wb.sheets[0], name = 'Copy')
5、清空
(1)内容和格式
wb.sheets['Copy'].clear()
(2)内容
wb.sheets['Copy'].clear_contents()
6、sheet的名字
(1)读取sheet的名字
sheet_name = wb.sheets[0].name
print(sheet_name)
(2)修改sheet的名字
wb.sheets[0].name = 'newname'
print(wb.sheets[0].name)
7、获取所有sheet的名字
sheet_names = []
for i in wb.sheets:
sheet_names.append(i.name)
print(sheet_names)
8、读取最大行列
(1)非连续区域
max_row = wb.sheets[0].used_range.last_cell.row
max_column = wb.sheets[0].used_range.last_cell.column
shape = wb.sheets[0].used_range.shape
(2)连续区域
max_row = wb.sheets[0]['A1048576'].end('up').row
max_column = wb.sheets[0]['XFD1'].end('left').column
(3)最后一个单元格
last_cell = chr(max_column+96)+str(max_row)
last_cell = chr(shape[1]+96)+str(shape[0])
9、自动调整行、列
wb.sheets[0].autofit('c')
五、操作Excel单元格的API
1、读取单元格
(1)单元格
a = wb.sheets[0].range('A1').value
(2)一行 or 一列
b = wb.sheets[0].range('A1:A3').value
c = wb.sheets[0].range('A1:C1').value
(3)多行多列
d = wb.sheets[0].range('A1:B3').value
(4)全部单元格
e = wb.sheets[0].range('A1').expand('table').value
(5)非连续区域
full_values = wb.sheets[0].range('A1:' + last_cell).value
2、写入单元格
(1)单元格
wb.sheets[0].range('A6').value = '123'
(2)按行写入
wb.sheets[0].range('A6').value = [1,2,3]
wb.sheets[0].range('A6').expand('right').value = [1,2,3]
wb.sheets[0].range('A6').expand('down').value = [1,2,3]
(3)按列写入
wb.sheets[0].range('A6').value = [[1],[2],[3]]
wb.sheets[0].range('A6').options(transpose = True).value = [1,2,3]
(4)多行多列
wb.sheets[0].range('A6').value = [[1,2],[3,4],[5,6]]
wb.sheets[0].range('A6').expand('table').value = [[1,2],[3,4],[5,6]]
wb.sheets[0].range('A6').options(expand = 'table').value = [[1,2],[3,4],[5,6]]
3、range的引用
(1)名称
a = wb.sheets[0].range('A1').value
b = wb.sheets[0].range('A1:A3').value
c = wb.sheets[0].range('A1:C1').value
d = wb.sheets[0].range('A1:B3').value
e = wb.sheets[0].range('A1').expand('table').value
(2)索引
a = wb.sheets[0].range((1,1)).value
b = wb.sheets[0].range((1,1),(3,1)).value
c = wb.sheets[0].range((1,1),(1,3)).value
d = wb.sheets[0].range((1,1),(3,2)).value
e = wb.sheets[0].range((1,1)).expand('table').value
4、设置单元格格式
(1)合并
wb.sheets[0].range('A1:C1').merge()
(2)取消合并
wb.sheets[0].range('A1:C1').unmerge()
(3)填充颜色
wb.sheets[0].range('A1:C1').color = (191,191,191)
5、设置字体格式
(1)字体
wb.sheets[0].range('A1').font.name = '宋体'
(2)大小
wb.sheets[0].range('A1').font.size = 20
(3)颜色
wb.sheets[0].range('A1').font.color = (255,0,0)
(4)粗体
wb.sheets[0].range('A1').font.bold = True
(5)斜体
wb.sheets[0].range('A1').font.italic = True
六、总结
综上所述,xlwings在操作Excel方面绝对是:yyds!