基于Python实现excel表格读写

高洛峰
高洛峰 原创
2016-11-22 16:42:00 934浏览

首先安装对应的xlrd和xlwt

打开cmd命令窗口输入pip install xlrd和pip install xlwt就可以安装。之后输入pip list检查是否成功配置:

QQ图片20161122092324.png

xlrd操作#

接下来就是常用的语法操作:

excel_data = xlrd.open_workbook(文件路径')#得到对应的工作表

sheet = excel_data.sheets()[工作表序号]#得到对应工作表中的某一个表格

sheet.row_values(2)#对应的某一行的数据

sheet.cell(6,1).value#对应某一列的数据

QQ图片20161122092324.png

以该表格为例先试一下对应的语句:

QQ图片20161122092324.png

先指定对应的表格和其中的某一个表,否则会提示出错编译不通过。将以上代码运行得到:

QQ图片20161122092324.png

源码如下:

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)#打印某个具体值

运行结果如下:

QQ图片20161122092324.png

对比表格得到一些值得注意的地方,指定的行数列数是从0开始,打开指定的表格时要注意绝对路径时要连同文件名和文件后缀也要带上才能成功读取数据。

接下来实验读取指定的某个单元格的数据:

sheet.cell(行,列).value

QQ图片20161122092324.png

运行得到:

QQ图片20161122092324.png

对比表格得到数据:

QQ图片20161122092324.png

是其中的(7,B),和之前提到的从零开始计数是一致的。

除了以上列举的一些操作外还有其他的常见语句可以在相关文档和官网中查看,文末有相关链接,接下来实验另一个xlwt库以实现对excel表格的写入操作。

xlwt操作#

对于excel表格一般关心的问题在于以下几个方面:

创建工作薄和表

写入单元格

常见格式设置(货币文本等)

创建公式

保存

接下来依次尝试以上提到的各个功能:

工作薄和表对应的对象为:workbook,sheet

QQ图片20161122092324.png

2.单元格赋值:

QQ图片20161122092324.png

这里尝试了一下采用负数

QQ图片20161122092324.png

编译没有问题留作后面保存后检查结果是否正确。

3.格式设置:

QQ图片20161122092324.png

可见对应传入参数除行列和值外还包括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 xlwt

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

QQ图片20161122092324.png

就回到了一开始留下的坑,单元格赋值规则应该与使用习惯一致不能为负数。最后修改得到:

import xlrd
import xlwt

workbook = 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') #文件路径要存在且不能同名

QQ图片20161122092324.png

声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn核实处理。
上一条:Python编程规范 下一条:Python读取PDF内容