gpt4 book ai didi

python - 合并或连接数百个 Excel 文件

转载 作者:行者123 更新时间:2023-11-30 21:56:06 25 4
gpt4 key购买 nike

我的目录中有 638 个 Excel 文件,每个文件大小约为 3000 KB。我想将它们连接在一起,希望只使用 Python 或命令行(没有其他编程软件或语言)。

本质上,这是一个更大的过程的一部分,涉及一些简单的数据操作,我希望这一切都可以通过运行一个 python 文件(或双击批处理文件)来完成。

我尝试过以下代码的变体 - Pandas、openpyxl 和 xlrd,它们的速度似乎大致相同。转换为 csv 似乎需要 VBA,我不想进入其中。

temp_list=[]
for filename in os.listdir(filepath):
temp = pd.read_excel(filepath + filename,
sheet_name=X, usecols=fields)
temp_list.append(temp)

是否有更简单的命令行解决方案可以将这些文件转换为 csv 文件或合并到一个 Excel 文档中?或者这就是了,只是使用基本库来读取单个文件?

最佳答案

.xls(x) 是一种非常(过于)复杂的格式,具有多年来积累的许多功能和怪癖,因此很难解析。它的设计从来都不是为了速度或大量数据,而是为了业务人员的易用性。

因此,对于您的文件数量,最好的选择是将它们转换为 .csv 或其他易于解析的格式(或首先使用此类格式进行数据交换) - - 最好在处理它们之前执行此操作 - 例如文件到达后。

例如这是如何使用 Excel's COM interface 使用 pywin32.xls(x) 的第一页保存到 .csv 的方法:

import win32com.client
# Need the typelib metadata to have Excel-specific constants
x = win32com.client.gencache.EnsureDispatch("Excel.Application")
# Need to pass full paths, see https://stackoverflow.com/questions/16394842/excel-can-only-open-file-if-using-absolute-path-why
w = x.Workbooks.Open("<full path to file>")
s = w.Worksheets(1)
s.SaveAs("<full path to file without extension>",win32com.client.constants.xlCSV)
w.Close(False)

并行运行通常不会有任何效果,因为 the same server process would be reused 。您可以按照 How can I force python(using win32com) to create a new instance of excel? 强制为每个批处理创建不同的进程。 .

关于python - 合并或连接数百个 Excel 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55580670/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com