我有一个非常大的CSV数据集(几百万条记录).我已经过滤和按摩并将此列表拆分为客户端规范.这一切都在Python3.3中完成
最后一个要求是这些拆分列表以Excel格式保存.他们有一个实用程序,在执行一些计算并检查数据库中的现有重复项后,将Excel电子表格(以特定格式)导入其数据库.我的问题是他们的实用程序只适用于Excel 2003 .xls文件...我不知道这个提前.
因此,我已经可以使用OpenPyXl以正确的Excel 2007格式编写数据,但这些文件不起作用.我可以写CSV文件,但那些也不起作用,他们的导入器需要xls文件.也许有一种方法可以将所有文件从Excel 2007 xlsx格式批量转换为xls格式,或者从csv格式批量转换为xls格式?有数千个文件,因此无法手动完成.
最好的办法是以正确的格式输出它们,但我似乎找不到兼容python 3的方式,它将与Excel 2003格式一起使用.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)
Run Code Online (Sandbox Code Playgroud)
使用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
Run Code Online (Sandbox Code Playgroud)
这是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()
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
1532 次 |
最近记录: |