文章目录
1. 按
读取我一般用xlrd
(仅支持读),修改用openpyxl
(支持读写改),写用xlsxwriter
(仅支持写 )
2. 安装命令
xlrd
参考:Python3安装xlrd
openpyxl
参考:Python3安装openpyxl
xlsxwriter
参考:Python3安装xlsxwriter
安装在此就不过多介绍了,新手可以参考Ipython
的安装过程:https://blog.csdn.net/COCO56/article/details/81058483
3. 常用功能:
3.1. 基础功能
3.1.1. xlrd
-
获取所有sheet的名字
import xlrd #导入库 workbook = xlrd.open_workbook('test.xlsx') #打开当前文件夹下的test.xlsx sheetnames = workbook.sheet_names() #获取该文件的所有sheet名(返回的是一个列表 ) print(sheetnames) #打印所有sheet的名字的列表
-
通过索引顺序获取Sheet
worksheet=workbook.sheet_by_index(0) #索引默认从0开始
-
通过名字遍历每一个sheet,打印总行数和总列数以及指定单元的值
for sheetN in sheetnames: sheet = workbook.sheet_by_name(sheetN) #通过名称获取Sheet print(sheet.nrows, sheet.ncols) #打印此表格(Sheet)的行数和列数 print(sheet.cell(0,0).value) #打印第一行第一列的单元格的值(索引从0开始)
3.1.2. openpyxl
- 加载一个已存在的文件的例子(如果是需要新建的可以使用openpyxl.Workbook(‘hello.xlxs‘),不过单纯新建的话建议用xlsxwriter)并打印Sheet_names
import openpyxl wb = openpyxl.load_workbook('test.xlsx') print(wb.get_sheet_names())
- 接着上面的代码,访问第一个worksheet,获取该sheet的最大行数和最大列数(此外还有:min_row:表格的最小,min_column:表格的最小列,rows:按行获取单元格(Cell对象) - 生成器,columns:按列获取单元格(Cell对象) - 生成器,values:按行获取表格的内容(数据) - 生成器)
ws = wb[wb.sheetnames[0]] print(ws.max_row) print(ws.max_column)
- 打印第一行第一列的单元格的值(注意是从1开始,不是从0开始,另外 row=和column=可缺省)
print(ws.cell(row=1, column=1).value) print(ws.cell(1, 1).value) #row=和column=可缺省
- 修改第一行第一列的单元格的值为1并保存(可以等全部修改完之后再保存,不需要每次修改都保存一下)
ws.cell(1, 1).value = 1 wb.save('test.xlsx')
3.1.3. xlsxwriter
- 打开文件,添加sheet并写入数据
import xlsxwriter workbook = xlsxwriter.Workbook('test2.xlsx') #打开一个xlsx文件(如果打开的文件存在 ,则清空该文件,如果文件不存在,则新建) worksheet = workbook.add_worksheet() #新建一个Sheet(名字缺省的话,默认从Sheet1开始,可以添加自己的sheet名字 worksheet.write(0,0,1) #修改该Sheet的第一行的第一列的元素为1(行号和列号默认从0开始) workbook.close()#最后关闭文件
3.2. 进阶功能
3.2.1. openpyxl
3.2.2. xlsxwriter
官方文档:https://xlsxwriter.readthedocs.io/
- 设置自动换行、水平居中和垂直居中
import xlsxwriter wb = xlsxwriter.Workbook('test.xlsx') cell_format_wrap = wb.add_format({'text_wrap':True}) cell_format_vcenter = wb.add_format({'valign':'vcenter'}) cell_format_center = wb.add_format({'align':'center'}) cell_format_vcenter_and_center = wb.add_format({'align':'center', 'valign':'vcenter'}) ws = wb.add_worksheet() ws.write(0, 0, 'data', cell_format_wrap)
- 设置列宽
worksheet.set_column('A:B', 20) # 设置A到B列的列宽全为20 worksheet.set_column(1, 3, 30) # Width of columns B:D set to 30.