答案 0 :(得分:14)
我遇到了同样的问题,使用pyxlsb为我做了这件事:
from pyxlsb import open_workbook
with open_workbook('HugeDataFile.xlsb') as wb:
for sheetname in wb.sheets:
with wb.get_sheet(sheetname) as sheet:
for row in sheet.rows():
values = [r.v for r in row] # retrieving content
csv_line = ','.join(values) # or do your thing
答案 1 :(得分:12)
最受欢迎的Excel python包openpyxl和xlrd不支持xlsb
格式(错误跟踪器条目:openpyxl,xlrd)。
所以我担心没有原生的python方式= /。但是,由于您使用的是Windows,因此使用外部工具编写任务应该很容易。
我建议你看一下Convert XLS to XLSB Programatically?。你在标题中提到python,但问题的问题并不意味着你与它强烈耦合,所以你可以去纯粹的c#方式。
如果你觉得只对python感到非常舒服,那么其中一个答案会建议使用名为Convert-XLSB的命令行工具。您可以使用subprocess
从python脚本将其编写为外部工具。
我知道这不是一个好的答案,但我认为目前没有更好/更简单的方法。
答案 2 :(得分:7)
我也查看了这个问题,以下内容对我有用。首先通过python在excel中打开文件,然后将其保存到不同的文件中。有点变通方法,但我比其他解决方案更喜欢它。在示例中,我使用CSV格式的文件格式6,但您也可以使用其他格式。
import win32com.client
excel = win32com.client.Dispatch("Excel.Application")
excel.DisplayAlerts = False
excel.Visible=False
doc = excel.Workbooks.Open("C:/users/A295998/Python/@TA1PROG3.xlsb")
doc.SaveAs(Filename="C:\\users\\A295998\\Python\\test5.csv",FileFormat=6)
doc.Close()
excel.Quit()
答案 3 :(得分:4)
在我之前的经验中,我正在使用 libreoffice 命令行实用程序处理转换xlsb,
在ruby中,我只执行系统命令调用libreoffice将xlsb格式转换为csv:
`libreoffice --headless --convert-to csv your_csv_file.csv --outdir /path/csv`
并更改编码我使用命令行使用 iconv ,使用ruby:
`iconv -f ISO-8859-1 -t UTF-8 your_csv_file.csv > new_file_csv.csv`
答案 4 :(得分:2)
XLSB是一种二进制格式,我不认为您能够使用当前的python工具和软件包解析它。如果您仍然希望以某种方式使用python自动执行该过程,您可以执行其他人告诉您的操作并编写窗口CLI tool的脚本。使用子进程从命令行调用.exe,并传递要转换的文件数组。
即:使用类似于此脚本的脚本,您可以转换放在" xlsb"中的所有.xlsb文件。文件夹到.csv格式......
├── xlsb
│ ├── file1.xlsb
│ ├── file2.xlsb
│ └── file3.xlsb
└── xlsb_to_csv.py
xlsb_to_csv.py
#!/usr/bin/env python
import os
files = [f for f in os.listdir('./xlsb')]
for f in files:
subprocess.call("ConvertXLS.EXE " + str(f) + " --arguments", shell=True)
注意:Windows命令是伪代码...我使用类似的方法批量转换无头Windows服务器中的东西来测试purpouses。你只需要找出exe位置和windows命令......
希望它有所帮助......祝你好运!
答案 5 :(得分:1)
我认为您可以使用pyuno执行此操作。这个blog entry显示了如何将xls文件转换为csv,并且由于开放式办公室支持自版本3.2以来的xlsb文件,因此该代码可能对您有用。你将不得不经历设置pyuno环境的麻烦..
答案 6 :(得分:1)
您引用的脚本似乎使用ActiveX接口到Excel,并通过其Workbook.SaveAs
方法保存。
根据{{3}},此方法有一个TextCodepage
参数可能会有所帮助。
旁注:您可以在python中重写VB脚本,请参阅MSDN documentation。