0

我一直在努力创建一个脚本,将 Excel 文件转换为 csv,以便在我们的一些工具中进行进一步处理。

对于 xls、xlsx 和 xlsm,我找到了将文件作为文本对象打开或使用 pandas 的解决方案。当遇到 xlsb 文件时,我登陆了 pyxlsb 包,它可以工作......请参阅此处使用的代码如何使用 python 将 XLSB 文件转换为 csv?

遗憾的是,我注意到 xlsb 文件中的 int() 值似乎被转换为浮点数,因此作为浮点数写入我的 csv 文件中。这显然是不可取的。

基本上我正在寻找一个 dtype=object 类型的解决方案。我想也许我可以添加一个使用另一个函数将值转换回 int 的步骤。但是我认为这效率低下并且容易出错。

我在 pyxlsb 页面(https://pypi.org/project/pyxlsb/)上环顾四周,没有运气。

我的代码:

    to_replace_list = ['\r', '\n', '\\r\\n', '\\' + str(out_del)]  # values to replace in all rows
    with open_xlsb(file_to_convert) as wb:  # open xlsb file using pyxlsb package
        for sheet_name in wb.sheets:  # loop over all sheets in file
            with wb.get_sheet(sheet_name) as sheet:  # open xlsb sheet obj
                out_file = out_filer(total_filename, sheet_name)  # define output file name based on source and sheet
                with open(out_file, 'a') as o:  # open output csv obj
                    for row in sheet.rows():  # loop over rows in xlsb obj
                        print([re.sub(value, '', str(cell.v)) for value in to_replace_list for cell in row])

sidequest:xlsb 文件中的空值将在输出中称为 None。我希望这是''。

4

1 回答 1

0

自 Pandas 1.0.1 发布以来,read_excel() 现在支持 xlsb

pd.read_excel('path_to_file.xlsb', engine='pyxlsb')

https://pandas.pydata.org/docs/user_guide/io.html#io-xlsb

于 2020-02-13T11:00:12.307 回答