如何使用python将XLSB文件转换为csv?

时间:2014-03-12 23:41:15

标签: python xlsb

7 个答案:

答案 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包openpyxlxlrd不支持xlsb格式(错误跟踪器条目:openpyxlxlrd)。

所以我担心没有原生的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