[Python] Python与Excel–只读|只写|读写|创建图表


库介绍:

  1. 对于版本
    xlrd,xlwt比较老,只能处理由Excel 97-2003或者Excel 97之前版本的xls格式。xlwt甚至不支持07版本以后的excel,这个格式excel文件一般来说,最大只能支持256列或者65536行的excel文件。

  2. 对于大数据
    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()

转载自:https://blog.csdn.net/summer_dew/article/details/78173263

You may also like...