1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > python excel 之 按格式生成图表和数据

python excel 之 按格式生成图表和数据

时间:2019-06-23 05:30:08

相关推荐

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 openpyxlxfile = openpyxl.load_workbook('test.xlsx')sheet = xfile.get_sheet_by_name('Sheet1')sheet['A1'] = 'hello world'xfile.save('text1.xlsx')

当然也可以打开一个文件,然后激活它,在对他写入

from openpyxl import load_workbookfrom pyecharts.faker import Fakerwb = 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'] = 34ws['A1':'A3'] = [23, 45,67]ws.cell(row = 4, column = 2).value = 'test'# 保存wb.save(dest)

xlsxwriter

xlsxwriter可以写excel文件并加上图表,缺点是不能打开/修改已有文件,意味着使用 xlsxwriter 需要从零开始。

import xlsxwriterfrom pyecharts.faker import Fakerfilename = 'test.xlsx'test_book = xlsxwriter.Workbook(filename)worksheet = test_book.add_worksheet('what')datas = zip(Faker.choose(), Faker.values())# 定义起始的行列 会在这个基础上 行列各加一 作为初始行列row = 0col = 0for item, cost in datas:worksheet.write(row, col, item)worksheet.write(row, col+1, cost)row += 1worksheet.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 = 300chart.width = 600# legend 位置设置chart.set_legend({'position': 'bottom'}) # top ,left,right,bottom# 添加seriesseries = {'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工具

/download/u011888840/12354598

和源码

/download/u011888840/12851161

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。