经常看到身边的同事(包括自己)在弄Excel表格的时候,各种复制粘贴非常麻烦,尤其是每天做一样的工作,重复枯燥费时间,于是打算写个小脚本自动更新Excel表格。
image.png我们以这个表格为例,给大家看下表格长啥样儿,我们要更新的列是日期-字段9里面的数据,其中最后两列是套公式自动计算的。
我们这里主要使用pandas和openpyxl这两个库进行操作。
思路首先表格中肯定会存在制作好的公式,只要填入数据就能够自动刷新,那么我们需要的是利用Python来处理我们需要自行填充的部分
逐行更新问题:我们需要获取到当前表格的最大行,但是如果直接获取的话会存在一定的问题,如果表格这行的部分单元格有数据的话,Python会认为这一行就不是空行了,会导致数据错乱,因此我们的解决办法是用pandas去获取某列的行数,再此基础上增加一行,以达到自增的目的
那么思路有了就开始写代码吧
首先导包:from openpyxl import load_workbook # 读取Excel文件
from datetime import date, timedelta # 时间处理
import pandas as pd # 读取文件
import os # 操作本地文件
import logging # 打日志
然后新建个类,初始方法,两个方法,初始方法主要就是一些基本的配置参数、时间啊、文件名、文件路径之类的。第一个方法是获取当前表格某列的最大行数,在此基础上自增行数。第二个方法就是写入数据了。 class Writing_to_excel():
def __init__(self):
"""
基本参数配置:时间参数、文件路径、源文件名、临时文件名、工作表名、字段名
"""
self.data_ytd = (date.today() + timedelta(days=-1)).strftime("%Y/%m/%d")
self.filepath = '/Users/jason/Desktop/'
self.filename = 'test_data.xlsx'
self.file