开头先BB两句
基本上来说,每周五写的周报都是这个套路。
突然想用Python智能化办公,修改Excel表格。
先不考虑,合并单元格,修改表格样式的操作。就先做个简单的读写。
操作过程
安装Python
工欲善其事必先利其器,首先做好准备工作,开发环境必不可少。
直接官网下载安装包,我使用的是3.6.5版本。下载安装后,配置环境变量。
开发工具,我就直接用的vscode,安装了一个python插件。
按住 ctl + alt + P 设置Python选择解释器即可。
Pandas官网地址
pandas.pydata.org/
Pandas中文文档
www.pypandas.cn/
Pandas安装包
pandas处理 Exce l需要 xlrd、openpyxl 依赖包
pip install pandaspip install xlrdpip install openpyxl复制代码
上手使用
正如官网所示,使用方法,就像1、2、3 一样简单
1、安装包$ pip install pandas 2、进入python的交互式界面$ python -i 3、使用Pandas>>> import pandas as pd>>> df = pd.DataFrame() >>> print(df) 4、输出结果Empty DataFrameColumns: []Index: []复制代码
创建Excel,写入数据
import pandas as pdfrom pandas import DataFrame创建DataFrame可以用下面字典,也可以用数组ndarraydic = {标题列1: [malena,morgan], 标题列2: [36, 34] }df = pd.DataFrame(dic)df.to_excel(write_test.xlsx, index=False)复制代码
执行py文件,成功写入,感觉就是非常的奈斯。
引入pandas DataFrame对象
import pandas as pdfrom pandas import DataFrame复制代码
写入 Excel 文件,官方示例:
df.to_excel(foo.xlsx, sheet_name=Sheet1)复制代码
读取 Excel 文件,官方示例:
pd.read_excel(foo.xlsx, Sheet1, index_col=None, na_values=[NA])复制代码
这里有个小坑:
原因是最近xlrd更新到了2.0.1版本,只支持.xls文件。所以pandas.read_excel(‘xxx.xlsx’)会报错。
可以安装旧版xlrd,在cmd中运行:
pip uninstall xlrdpip install xlrd==1.2.0复制代码
也可以用openpyxl代替xlrd打开.xlsx文件:
df=pandas.read_excel(‘data.xlsx’,engine=‘openpyxl’)复制代码
读取Excel文件,并且打印出来
data = pd.read_excel(zmy-weekly.xlsx, sheet_name=3月, engine=openpyxl)print(data)复制代码
打印结果如下图所示:
通过修改 data.loc 的值,改变数据。data.loc 可以粗浅地理解为是一个二维数组,对应每一行每一列的单元格。
譬如,将工作事项2修改为工作事项5,对应的单号格,第3行,第2列
data.loc[3][2] = 工作事项5;复制代码
修改完成,最后写入新的Excel表格,可以设置sheet_name,譬如设置为3月。
DataFrame(data).to_excel(new.xlsx, sheet_name=3月, index=False, header=True)复制代码
完整代码如下:
import pandas as pdfrom pandas import DataFrame 3.8.2 pandas读写Exceldef write_weekly(): data = pd.read_excel(zmy-weekly.xlsx, sheet_name=3月, engine=openpyxl) print(data) print(data.loc) data.loc[2][0] = 3月5周; data.loc[2][2] = 工作事项4; data.loc[3][2] = 工作事项5; data.loc[4][2] = 工作事项6; data.loc[2][4] = 已完成; data.loc[3][4] = 已完成; data.loc[4][4] = 已完成; data.loc[5][2] = 又是一个临时工作; data.loc[6][0] = 4月1周; data.loc[6][2] = 工作事项7; data.loc[7][2] = 工作事项8; data.loc[6][4] = 进行中; data.loc[7][4] = 进行中; 保存数据 DataFrame(data).to_excel(new.xlsx, sheet_name=3月, index=False, header=True)write_weekly();复制代码
样式不一样,但是问题不大。打开上周的周报,全选,然后格式刷,点击新增的周报,啊哈。
自我吐槽
话说,都已经打开Excel了,为什么不直接改还快一点?
不过,折腾了这么一下,通过Python用Pandas读写Excel的基本操作,我应该是说清楚了。今后不定期再折腾。