python excel 之 按格式生成图表和数据
python excel
针对python 对excel的操作目前有已经有很多库可以使用, 比如最常用的读写库xlrd,xlwt,xlutils 对xlsx、xlsm读写的openpyxl 针对xlsx的xlsxwriter,方便操作图表数据
在网站上截取一个对比表,可以大概参考一下:
xlrd,xlwt, xlutils
对于xlrd,xlwt, xlutils这里就不多讲了, xlrd:对xls、xlsx、xlsm文件进行读操作–读操作效率较高,推荐 xlwt:对xls文件进行写操作–写操作效率较高,但是不能执行xlsx文件,超出excel 的单格内容长度上限65536,就会报错; xlutils:结合xlrd可以达到修改excel文件目的,需要注意的是你必须同时安装这三个库;
openpyxl
openpyxl:对xlsx、xlsm文件进行读、写操作–xlsx写操作推荐使用 针对openpyxl比较实用的就是能够对已有excel操作,追加数据 打开:openpyxl.load_workbook 写入时直接append列表,比较方便 对单元格读写使用cell 保存直接使用save函数 数据格式: NULL空值:对应于python中的None,表示这个cell里面没有数据。 numberic: 数字型,统一按照浮点数来进行处理。对应于python中的float。 string: 字符串型,对应于python中的unicode。 Excel文件三个对象: workbook: 工作簿,一个excel文件包含多个sheet。 sheet:工作表,一个workbook有多个,表名识别,如“sheet1”,“sheet2”等。 cell: 单元格,存储数据对象
import openpyxl xfile = openpyxl.load_workbook(test.xlsx) sheet = xfile.get_sheet_by_name(Sheet1) sheet[A1] = hello world xfile.save(text1.xlsx)
当然也可以打开一个文件,然后激活它,在对他写入
from openpyxl import load_workbook from pyecharts.faker import Faker wb = load_workbook(filename=dest) # 打开一个已有的workbook # wb = Workbook() # 创建一个工作簿(workbook)在创建的时候同时至少也新建了一张工作表(worksheet) sheet_names = wb.get_sheet_names() # 获取sheet名 ws = wb.get_sheet_by_name(sheet_names[0]) # index为0为第一张表 ws.append(Faker.choose()) datas = [] for i in range(5): ws.append(Faker.values()) # 对单元格的读写 c = ws[A4] ws[A5] = 34 ws[A1:A3] = [23, 45,67] ws.cell(row = 4, column = 2).value = test # 保存 wb.save(dest)
xlsxwriter
xlsxwriter可以写excel文件并加上图表,缺点是不能打开/修改已有文件,意味着使用 xlsxwriter 需要从零开始。
import xlsxwriter from pyecharts.faker import Faker filename = test.xlsx test_book = xlsxwriter.Workbook(filename) worksheet = test_book.add_worksheet(what) datas = zip(Faker.choose(), Faker.values()) # 定义起始的行列 会在这个基础上 行列各加一 作为初始行列 row = 0 col = 0 for item, cost in datas: worksheet.write(row, col, item) worksheet.write(row, col+1, cost) row += 1 worksheet.write(row, col, 总和) worksheet.write(row, col+1, =SUM(B1,B7)) # 冻结单元格 worksheet.freeze_panes(1, 1) test_book.close()
当然其操作表格是十分方便的
chart = test_book.add_chart({type: "line"}) # 创建折线chart 对象 # 设置图表的title 和 x,y轴信息 chart.set_title({"name": "name", "name_font": {name: Arial, "color":"blue", "size":12, bold: True}}) # 设置图标风格和大小 chart.set_style(1) chart.height = 300 chart.width = 600 # legend 位置设置 chart.set_legend({position: bottom}) # top ,left,right,bottom # 添加series series = { name: name, line: {color: "#A01212",width: 3}, # 显示的颜色 data_labels: {value: False}, # 不显示在图表上的数据标签 categories: =what!$A$1:$A$5, values: =what!$B$1:$B$5, } chart.add_series(series) # 把图表插入到worksheet并设置偏移 worksheet.insert_chart(A1, chart, {x_offset:200, y_offset: 100})
当然你也可以在一个sheet中添加多个series 生成这样的效果 自己写了一个小工具将txt文本数据生成如上的excel表格和echarts表的 有兴趣的可以下载exe工具 https://download..net/download/u011888840/12354598 和源码 https://download..net/download/u011888840/12851161