库介绍:
对于版本
xlrd,xlwt比较老,只能处理由Excel 97-2003或者Excel 97之前版本的xls格式。xlwt甚至不支持07版本以后的excel,这个格式excel文件一般来说,最大只能支持256列或者65536行的excel文件。对于大数据
xlwt库保存大数据时报错:Exception: String longer than 32767 characters
面对需要导出大量数据excel情况,你有:(1)换一种存储格式,如保存为csv文件(2)使用openpyxl,因为它支持对Excel2007+xlsx/xlsm格式的处理 (3)win32 COM(windows only)
xlrd只读
xlrd并非python原生库,需要安装
打开excel文件
data = xlrd.open_workbook('excelFile.xlsx')
打开表
table = data.sheets()[0] #通过索引
table = data.sheet_by_name(u'Sheet1') #通过名称获取
获取整行和整列值(数组)
table.row_values(i) #获取第i行
table.col_values(i) #获取第i列
获取行数和列数
nrows = table.nrows
ncols = table.ncols
循环行列表数据
for i in range(nrows):
print table.row_values(i)
指定单元格
cell_A1 = table.cell(0,0).value
cell_C4 = table.cell(2,3).value
行列索引
cell_A1 = table.row(0)[0].value
cell_A2 = table.col(1)[0].value
简单写入
table.put_cell(row,col,ctype,value,xf)
# row行号
# col列号
# ctype类型
# 0 empty,1 string,2 number,3 date,4 boolean,5 error
# value单元格的值
# xf扩展的格式化
tabl.cell(0,0) #单元格的值
table.cell(0,0).value #单元格的值
xlwt只写
xlwt并非python原生库,需要安装
wb = xlwt.WorkBook() #创建excel对象
sheet = wb.add_sheet('sheet 1') #创建sheet对象
sheet.write(0,1,'我是第0行第一列的内容') #写入
wb.save('test.xls') #保存成excel文件
xlutils修改
xlutils并非python原生库,需要安装
import xlrd
from xlutils.copy import copy
rb = xlrd.open_workbook(u'测试.xls') #打开excel文件
wb = copy(rb) #复制原来的数据
ws = wb.get_sheet(0) #得到表格
ws.write(3,0,'修改') #修改单元格新年喜
wb.save(u'测试.xls') #保存,重名即覆盖
openpyxl读写大数据
openpyxl需要安装
from openpyxl import Workbook
from openpyxl import load_workbook
form openpyxl.write.excel import ExcelWriter
wb = load_workbook(u'读写测试.xls') #加载excel
sheetnames = wb.get_sheet_names() #获取表单名字
sheet = wb.get_sheet_by_name(sheetnames[0]) #打开下标为0的表单
print sheet.cell(row=3,column=3).value #读取数据
sheet['A1'] = '改变!' #修改数据
wb.save(u'测试读写.xls') #保存
xlsxwriter 写和添加图表
import xlsxwriter
def get_chart(series)
chart = workbook.add_chart({'type': 'line'})
for ses in series:
name = ses["name"]
values = ses["values"]
chart.add_series({
'name': name,
'categories': 'A2:A10',
'values':values
})
chart.set_size({'width': 700, 'height': 350})
return chart
if __name__ == '__main__':
workbook = xlsxwriter.Workbook(u'H5应用中心关键数据及趋势.xlsx')
worksheet = workbook.add_worksheet(u"每日PV,UV")
headings = ['日期', '平均值']
worksheet.write_row('A1', headings)
index=0
for row in range(1,10):
for com in [0,1]:
worksheet.write(row,com,index)
index+=1
series = [{"name":"平均值","values":"B2:B10"}]
chart = get_chart(series)
chart.set_title ({'name': '每日页面分享数据'})
worksheet.insert_chart('H7', chart)
workbook.close()