gpt4 book ai didi

excel - 从 python 3.x 写入 excel 2003 文件

转载 作者:行者123 更新时间:2023-12-02 04:02:34 36 4
gpt4 key购买 nike

我有一个非常大的 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。

有人对我如何完成这个有建议吗?

编辑: 这就是解决方案的样子。

编辑2: 按照 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)

最佳答案

使用 Excel 2007 打开它们并将它们另存为 Excel 2003。您可以使用简单的 VBA 宏或 Python 来完成此操作,甚至无需向用户显示 Excel 应用程序。唯一的问题是您的计算机中需要有 Excel。

这是 VBA 代码:

Sub ConvertTo2003(FileName As String)
Dim WB As Workbook
Set WB = Workbooks.Open(FileName, ReadOnly:=True)
WB.SaveAs Replace(FileName, ".xlsx", ".xls"), FileFormat:=xlExcel8
WB.Close
End Sub

这是Python代码:

xlApp = Excel.ExcelApp(False)
xlApp.convertTo2003('FileName.xlsx')

class ExcelApp(object):
def __init__(self, visible):
self.app = win32com.client.Dispatch('Excel.Application')
if visible:
self.app.Visible = True

def __exit__(self):
self.app.Quit()

def __del__(self):
self.app.Quit()

def convertTo2003(self, fileName):
if self.app:
wb = self.app.WorkBooks.Open(fileName, ReadOnly = True)
wb.SaveAs(fileName[:-1], FileFormat = 56)
wb.Close()

def quit(self):
if self.app:
self.app.Quit()

关于excel - 从 python 3.x 写入 excel 2003 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17836445/

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