我有一个非常大的 CSV 数据集(数百万条记录)。我已经过滤和按摩并将此列表拆分为客户规范。这都是在 Python3.3 中完成的
最后一个要求是这些拆分列表以 Excel 格式保存。他们有一个实用程序,可以在进行一些计算并检查数据库中现有的重复项后,将 Excel 电子表格(以特定格式)导入他们的数据库。我的问题是它们的实用程序仅适用于 Excel 2003 .xls 文件……我事先并不知道这一点。
所以我已经可以使用 OpenPyXl 为 Excel 2007 以正确的格式写入数据,但是这些文件将无法正常工作。我可以编写 CSV 文件,但那些也不起作用,它们的导入器需要 xls 文件。也许有一种方法可以将所有文件从 Excel 2007 xlsx 格式批量转换为 xls 格式,或从 csv 格式批量转换为 xls 格式?文件数以千计,因此无法手动完成。
最好的办法是以正确的格式输出它们,但我似乎找不到适用于 Excel 2003 格式的 python 3 兼容方式。xlwt 仅适用于 python 2.x。
有没有人建议我如何完成这个?
编辑:这就是解决方案的样子。
EDIT2:按照 stenci 的建议添加了关闭工作簿。
import os
import errno
import glob
import time
import win32com.client
def xlsx_to_xls(path):
xlsx_files = glob.glob(path+'\\*.xlsx')
if len(xlsx_files) == 0:
raise RuntimeError('No XLSX files to convert.')
xlApp = win32com.client.Dispatch('Excel.Application')
for file in xlsx_files:
xlWb = xlApp.Workbooks.Open(os.path.join(os.getcwd(), file))
xlWb.SaveAs(os.path.join(os.getcwd(), file.split('.xlsx')[0] + '.xls'), FileFormat=1)
xlWb.Close()
xlApp.Quit()
time.sleep(2) # give Excel time to quit, otherwise files may be locked
for file in xlsx_files:
os.unlink(file)