python excel

针对python 对excel的操作目前有已经有很多库可以使用,
比如最常用的读写库xlrd,xlwt,xlutils
对xlsx、xlsm读写的openpyxl
针对xlsx的xlsxwriter,方便操作图表数据

在网站上截取一个对比表,可以大概参考一下:

python 类图 生成 基于python的图表生成系统_数据

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

生成这样的效果

python 类图 生成 基于python的图表生成系统_python 类图 生成_02


自己写了一个小工具将txt文本数据生成如上的excel表格和echarts表的

python 类图 生成 基于python的图表生成系统_python 类图 生成_03