基于Python实现excel表格读写
摘要: 考虑到VBA写不好但是有对批量化处理数据的需求,所以推荐Python自带的xlrd和xlwt库对Excel表格数据进行读写操作。简明的代码风格很适合上手。
首先安装对应的xlrd和xlwt
打开cmd命令窗口输入pip install xlrd和pip install xlwt就可以安装。之后输入pip list检查是否成功配置:
xlrd操作#
接下来就是常用的语法操作:
excel_data = xlrd.open_workbook(文件路径')#得到对应的工作表
sheet = excel_data.sheets()[工作表序号]#得到对应工作表中的某一个表格
sheet.row_values(2)#对应的某一行的数据
sheet.cell(6,1).value#对应某一列的数据
以该表格为例先试一下对应的语句:
先指定对应的表格和其中的某一个表,否则会提示出错编译不通过。将以上代码运行得到:
源码如下:
import xlrd
import xlwt
excel_data = xlrd.open_workbook(文件路径')
excel_data = xlrd.open_workbook(r'C:\Users\hys mac\Desktop\实用的excel表格模板.xls')
sheet = excel_data.sheets()[工作表序号]
sheet = excel_data.sheets()[0]
print(sheet.row_values(2)) #打印某一行数据
print(sheet.col_values(1))#打印某一列
print( )
print ( sheet.cell(6,1).value)#打印某个具体值
运行结果如下:
对比表格得到一些值得注意的地方,指定的行数列数是从0开始,打开指定的表格时要注意绝对路径时要连同文件名和文件后缀也要带上才能成功读取数据。
接下来实验读取指定的某个单元格的数据:
sheet.cell(行,列).value
运行得到:
对比表格得到数据:
是其中的(7,B),和之前提到的从零开始计数是一致的。
除了以上列举的一些操作外还有其他的常见语句可以在相关文档和官网中查看,文末有相关链接,接下来实验另一个xlwt库以实现对excel表格的写入操作。
xlwt操作#
对于excel表格一般关心的问题在于以下几个方面:
- 创建工作薄和表
- 写入单元格
- 常见格式设置(货币文本等)
- 创建公式
- 保存
接下来依次尝试以上提到的各个功能:
- 工作薄和表对应的对象为:workbook,sheet
2.单元格赋值:
这里尝试了一下采用负数
编译没有问题留作后面保存后检查结果是否正确。
3.格式设置:
可见对应传入参数除行列和值外还包括style这一默认省略的参数。这里试验设置的格式为加粗。其他格式可以参照查找文末文档实现。这里有一些常见得其他格式:
style = easyxf(num_format_str='$#,##0.00')
# or set it directly on the style object
style = easyxf('font: bold 1')
style.num_format_str = '$#,##0.00'
sheet.write(0, 0, '100.00', style)
4.创建公式:
使用xlwt.Formula可以实现Excel公式。
sheet.write(0, 0, xlwt.Formula('HYPERLINK("http://yujitomita.com"; "click me")'))
5.保存操作:
workbook.save("Python.xls")
wbk.save('路径名')
这里值得提醒的是工作表的命名要小于31个字符且不能包括特殊字符(:。,等)。
运行结果:
按照之前的坑(-1,0)这里试运行结果:
# encoding : utf-8
import xlrd
import xlwtworkbook = xlwt.Workbook()
sheet = workbook.add_sheet("Sheet 1")#创建工作簿(workbook)和工作表(sheet)
sheet.write(-1, 0, 'Python')#行列对应
style = xlwt.easyxf('font: bold 1')
sheet.write(1, 1, 'style ', style)workbook.save('C:\Users\hys mac\Desktop\mr.c\python.xls')
报错结果如下:
SyntaxError: (unicode error) 'unicodeescape' codec can't decode bytes in position 2-3: truncated \UXXXXXXXX escape
遇到了文件编码的问题,修改后一句:
workbook.save(r'C:\Users\hys mac\Desktop\mr.c\python.xls')
就回到了一开始留下的坑,单元格赋值规则应该与使用习惯一致不能为负数。最后修改得到:
import xlrd
import xlwtworkbook = xlwt.Workbook()
sheet = workbook.add_sheet("Sheet 1")#创建工作簿(workbook)和工作表(sheet)
sheet.write(1, 0, 'Python')#行列对应
style = xlwt.easyxf('font: bold 1')
sheet.write(1, 1, 'style ', style)workbook.save(r'C:\Users\hys mac\Desktop\mr.c\python1.xls') #文件路径要存在且不能同名
结语和资料:
到这里这两个excel处理的模块操作基本结束了,还有其他实现相关功能的模块例如 openpyxl和win32com等有机会再写一篇作为横向对比的博文。御前带刀攻城狮 - 知乎知乎传送门欢迎留言交流。创作不易,保留权利。
更多Python视频、源码、资料加群725638078免费获取
本文来自博客园,作者:I'm_江河湖海,转载请注明原文链接:https://www.cnblogs.com/jhhh/p/16767026.html