Python3 进行读取、修改和写Excel表格(.xlsx文件)的常用功能示例

版权声明:本文为博主原创文章,未经博主允许不得转载。访问本人博客可以百度COCO56,获取更多资讯。有事儿请内信或者在文章下方评论 https://blog.csdn.net/COCO56/article/details/84403107

读取我一般用xlrd(仅支持读),修改用openpyxl(支持读写改),写用xlsxwriter(仅支持写 )

xlrd安装命令 pip install xlrd

openpyxl安装命令 pip install openpyxl

xlsxwriter安装命令 pip install xlsxwriter

(不多介绍,新手可以参考Ipython的安装过程)

Win10中如何装IPython?(其他Windows版本也通用)

https://blog.csdn.net/COCO56/article/details/81058483

下面是我经常用到的一些功能:

基础功能:

xlrd

导入库,打开test.xlsx,获取该文件的所有sheet名(调用的是函数,返回的是一个列表 )

import xlrd
workbook = xlrd.open_workbook('test.xlsx')
sheetnames = workbook.sheet_names()

通过名字遍历每一个sheet,打印总行数和总列数以及第一行第一列的单元格的值(从0开始)

for sheetN in sheetnames:
            sheet = workbook.sheet_by_name(sheetN)
            print(sheet.nrows)
            print(sheet.ncols)
            print(sheet.cell(0,0).value)

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')

xlsxwriter

打开一个xlsx文件(如果打开的文件存在 ,则清空该文件,如果文件不存在,则新建)

新建一个Sheet(名字缺省的话,默认从Sheet1开始,可以添加自己的sheet名字workbook.add_worksheet(‘TestSheet’))

修改该Sheet的第一行的第一列的元素为1(行号和列号默认从0开始)

最后关闭文件

import xlsxwriter
workbook = xlsxwriter.Workbook('test2.xlsx')
worksheet = workbook.add_worksheet()
worksheet.write(0,0,1)
workbook.close()

进阶功能:

openpyxl

1.openpyxl设置单元格大小(行高和列宽)

https://blog.csdn.net/COCO56/article/details/84590544

xlsxwriter

官方文档:https://xlsxwriter.readthedocs.io/

1.设置自动换行、水平居中和垂直居中

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)

猜你喜欢

转载自blog.csdn.net/COCO56/article/details/84403107