Pandas + Openpyxl process excel

更新

date update
2021-03-11 1. Initial

背景

最近帮同学写了一个数据处理的小程序,用python开发,用来处理excel数据。

其实excel本身就能实现大部分功能,并不一定要用程序处理,但用代码的话更灵活一些。

功能

数据本身不能share,但是计算逻辑应该无所谓,所以代码已经放在haredata

程序主要用到了python库pandas + openpyxl,写了非常简单的ui界面来选择输入的文件,处理完之后数据输出写入到新的文件里。

为了使用方便,最后打包成了exe。

Read more

openpyxl with big data

背景

最近写了一个脚本,用 openpyxl 从 sql server 数据库中读取数据,使用 template 文件,将数据填充进去,生成最后的 daily report。

使用 openpyxl 来操作 excel,很方便,但发现当要写入大量数据的时候,时间非常慢,而且非常占内存。

最直接的原因是 openpyxl 会将读写过的 cell 都加载在内存中方便后面 update,不会释放这些 cell 而会一直驻留在内存中。

所以如果单纯写的话建议使用 xlrd,而且 pandas 有 to_csv/to_excel 这样的直接的方法。

但是因为我需要使用模板,在研究后发现 openpyxl 有 read_only/write_only 的模式,可以满足我的需求。
(一定要保证安装了 lxml 库,不然就算使用 write_only 模式,也一样会点用大量占存。)

Note:针对 office2007 以后的版本,xlsx 文件上限行数大约为 100 多万条的样子。

Read more

Compare Excel

背景

下周可能有一个小任务是由于系统升级,需要保证生成的 excel 是一致的,所以写了一个非常简单的对比脚本。

Read more

Create Excel with line chart by openpyxl

Create Excel with line chart by openpyxl

之前有用过openpyxl做了简单的介绍

但是我今天在尝试画chart的时候,发现没有很好用的api可以参考,可能是我没找到吧,一些细节只能google,或者从源代码里找。

好在之前在做AMS报表的时候,有用ChartFX画过一些图表,大体上的api设计是一致的。

Read more

openpyxl

openpyxl

之前测试PamReport的报表,需要对比txt和excel报表,用java(org.apache.poi)写了对比的脚本。但感觉还是有些麻烦,
java在文本io方面还是不够灵活方便。今天试了python的openpyxl这个库,感觉真的的特别好用,就试着用了一下基本操作。

Read more