使用python和xlwings合并excel文件
20年前读书时间考了一个C语言二级,许多年都没有使用过,现在工作上遇到一个合并汇总excel文件问题,找了一个新版pyhon,网络百度,自学2周,编写了一个脚本,基本可用。来此记录已自勉!
脚本设计
- 合并python脚本当前目录及下级目录的xlsx文件。
- 只支持合并excel文件只有一个工作表,唯一sheet,只支持唯一关键字为文本的合并,为数字的因为xlwing读取到list列表格式变浮点数字,不能正确更新汇总表(原因没学懂)。
- 通用型合并,可适用于不同结构excel文件,只需满足上面2点的要求。
- 合并汇总文件,关键数据列,有效数据列,使用《配置文件.xlsx》配置。
通用配置文件.xlsx
序号 项目 说明
汇总文件 2019年12月二次分配表 填写汇总文件名称
关键字列 4 填写关键字列,无重复,从0开始计算,A列为0,
有效数据列 9 填写有效数据列,一般选基础薪酬列,从0开始算,A列为0,B列为1
汇总表名称 python汇总 填写添加的汇总工作表名称
原始数据表 前端 填写原始数据表名称
标题
import os
import sys
import xlwings as xw
import time
#读取当前文件夹及子文件夹下的xlsx文件
def read_filelist():
file_list = []
path = os.path.dirname(os.path.realpath(__file__))
for root, dirs, files in os.walk(path, topdown=False):
for name in files:
if name[-4:] == 'xlsx':
file_list.append(os.path.join(root, name))
return (file_list)
#读取配置文件
def read_inifile():
argv0_list = sys.argv[0].split("\\")
script_name = argv0_list[len(argv0_list) - 1]
ini_file = sys.argv[0]
ini_file = ini_file.replace(script_name, '配置文件.xlsx')
if os.path.isfile(ini_file):
app = xw.App(visible=False, add_book=False)
ini_wb = app.books.open(ini_file)
ini_sheet = ini_wb.sheets(1)
ini_value = ini_sheet.