几种操作Excel的python库对比
安装:pip install xlwings
目录
APP实例化对象
工作薄对象
创建工作薄
打开工作薄
工作薄属性
工作表对象
新增工作表
复制表
获取工作表对象
工作表属性
删除和清除表数据及表格式
工作表行高列宽(自动调整)
单元格对象
获取单元格对象
1、字母表示法
2、坐标法
3、切片法
单元格属性
单元格插入内容
name:给单元格命名
value:修改或写入文本内容
add_hyperlink:添加超链接
pictures.add:给单元格添加图片
api.AddComment:添加批注
formula:添加或修改函数表达式
单元格数据类型设置
编辑
单元格样式设置
autofit:设置单元格自适应宽高
Font:字体样式
Borders:边框样式
api.HorizontalAlignment:单元格对齐方式
合并和取消合并单元格
单元格颜色设置
保存退出操作
将Excel转为PDF文件
保存
关闭和退出
APP实例化对象
参数:visible表示实例化的对象是否可见(值为True时会调用系统默认设置打开Excel文件的程序,如打开wps),add_book表示是否在这个工作簿中默认新增工作表。
import xlwings as xw
app = xw.App(visible=False, add_book=False)
app.display_alerts = False # 关闭提示信息
app.screen_updating = False # 关闭显示更新
工作薄对象
创建工作薄
workbook = app.books.add() # 创建新的工作簿
打开工作薄
workbook = app.books.open(r'C:\Users\Administrator\Desktop\ceshi.xls') # 打开指定的工作簿
工作薄属性
print(workbook.name) # 返回工作簿名字print(workbook.sheets) # 返回工作薄中所有sheet表的列表,列表内容为所有工作表对象
for sh_name in workbook.sheets:print(sh_name.name)print(workbook.app) # 返回工作簿所在的App对象[Excel程序]
工作表对象
新增工作表
创建新的sheet工作表对象,可选before或者after参数,指定插入表格的位置在指定表之前或之后。
workbook.sheets.add('工资表', before='Sheet3')
复制表
参数:name(可选,str)副本的名字;before(可选,sheet对象)复制到哪个工作表之前;after(可选,sheet对象)复制到哪个工作表之后
sheet1.copy()
sheet1.copy(name='复制表重名命测试', after=sheet1)
sheet1.copy(name='复制表重名命测试2', before=sheet1)
获取工作表对象
有三种不同的方法可以获取表对象:表名、表索引、表序号
sheet1 = workbook.sheets['工资'] # 通过表名获取指定工作表对象
sheet1 = workbook.sheets[0] # 通过表索引获取指定工作表对象
sheet1 = workbook.sheets(1) # 通过表需要获取指定工作表对象,注意序号和索引的区别:()根据序号选择,从1开始;[]根据索引选择,从0开始。
工作表属性
有效行used_range.rows和有效列used_range.columns是比较实用的方法,可以方便获取有效数据进行遍历
print(str(sheet1.name)) # 获取表名
print(sheet1.index) # 获取当前表的序号(索引加1)
print(sheet1.used_range.rows, sheet1.used_range.columns) # 获取有效单元格行和列对象# 获取有效行和有效列
nrow = sheet1.api.UsedRange.Rows.count # 有效行数,同sheet1.used_range.rows.count,也可通过长度计算len(sheet1.used_range.rows)
ncol = sheet1.api.UsedRange.Columns.count # 有效列数,同sheet1.used_range.columns.count,,也可通过长度计算len(sheet1.used_range.columns)
print(nrow, ncol)
# 最大行,最大列:结果同有效行和列
print(sheet1.used_range.last_cell.row)
print(sheet1.used_range.last_cell.column)for i in sheet1.used_range.columns: # 可通过有效行或列遍历有效数据print(i.value)
删除和清除表数据及表格式
sheet1.clear() # 清除工作表所有内容和格式
sheet1.clear_contents() # 清除工作表的所有内容但是保留原有格式
sheet1.clear_formats() # 删除样式但保留文本
sheet1.delete() # 删除工作表
工作表行高列宽(自动调整)
sheet1.autofit('c') # 自动调整列宽
sheet1.autofit('r') # 自动调整行高
sheet1.autofit() # 自动调整行高列宽,如上可指定axis参数只设置行或列,无参数时同时设置行和列