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

经验分享 程序员 微信小程序 职场和发展