需要用到的库:
-
操作xls格式的表格文件:
读取:
xlrd
写入:
xlwt
修改(追加写入):
xlutils
操作 Excel 文件的实用工具,如复制、分割、筛选等 -
操作xlsx格式的表格文件:
读取/写入:
openpyxl
新建,写入内容,保存。
#coding=utf-8
import xlwt
import xlrd
try:
# 创建excel文件
filename=xlwt.Workbook()
# 给工作表命名,test
sheet=filename.add_sheet("test")
# 写入内容,第4行第3列写入‘张三丰’
hello=u'张三丰'
sheet.write(3,2,hello)
# 指定存储路径,如果当前路径存在同名文件,会覆盖掉同名文件
filename.save("D:/test1.xls")
except Exception,e:
print(str(e))
简单的读取
#coding=utf-8
import xlwt
import xlrd
try:
# 创建excel文件
filename=xlwt.Workbook()
# 给工作表命名,test
sheet=filename.add_sheet("test")
# 写入内容,第4行第3列写入‘张三丰’
hello=u'张三丰'
sheet.write(3,2,hello)
# 指定存储路径,如果当前路径存在同名文件,会覆盖掉同名文件
filename.save("D:/test1.xls")
except Exception,e:
print(str(e))
# 找到读取文件
filename='D:/test1.xls'
# 打开excel文件
date=xlrd.open_workbook(filename)
# 根据工作表名称,找到指定工作表 by_index(0)找到第N个工作表
sheet=date.sheet_by_name('test')
# 读取第四行第三列内容,cell_value读取单元格内容,指定编码
value=sheet.cell_value(3,2).encode('utf-8')
print(value)
字典格式
import xlwt
file=xlwt.Workbook(encoding="utf8")
table=file.add_sheet("data")
#字典数据
data = {
"1":["张三",150,120,100],
"2":["李四",90,99,95],
"3":["王五",60,66,68]
}
ldata=[]
# 对字典的遍历,其实是对‘键’的遍历
num=[a for a in data]
#for循环将data字典中的键和值分批的保存在ldata中
for x in num:
t=[int(x)]
for a in data[x]:
t.append(a)
ldata.append(t)
#将数据写入文件,i是enumerate()函数返回的序号数
for i,p in enumerate(ldata):
for j ,q in enumerate(p):
table.write(i,j,q)
file.save("test.xls")
xlwt的缺陷
xlwt只能创建一个全新的excel文件,然后对这个文件进行写入内容以及保存。但是大多数情况下我们希望的是读入一个excel文件,然后进行修改或追加,这个时候就需要xlutils了。
xlutils的简单使用
import xlrd
import xlutils.copy
# from xlutils.copy import copy
rexcel=xlrd.open_workbook('./hu.xls') # 用xlrd提供的方法读取一个excel文件
rows=rexcel.sheet_by_index(0).nrows # 用xlrd提供的方法获得现在已有的行数
excel=xlutils.copy.copy(rexcel) # 用xlutils提供的copy方法将xlrd的对象转化为xlwt的对象
table=excel.get_sheet(0) # 用xlwt对象的方法获得要操作的sheet
values=['a','b','v']
row=rows
for i in values: # xlwt对象的写方法,参数分别是行、列、值
table.write(row,0,i)
table.write(row,1,'haha')
table.write(row,2,'lala')
row +=1
excel.save('./huhuhu.xls') # xlwt对象的保存方法,这时便覆盖掉了原来的excel