我一直在创建一个脚本,该脚本将Excel文件转换为csv,以便在我们的某些工具中进行进一步处理。
对于xls,xlsx和xlsm,我已经找到了以文本对象或使用熊猫打开文件的解决方案。遇到xlsb文件时,我将其放在pyxlsb软件包上,该软件包可以工作...请参考此处使用的代码How can I convert a XLSB file to csv using python?
可悲的是,我注意到xlsb文件中的int()值似乎已转换为浮点型,因此以浮点型的形式写入了我的csv文件。这显然是不可取的。
基本上,我在寻找dtype = object type解决方案。我想也许我可以建议使用另一个函数将值转换回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。我希望这是“。
答案 0 :(得分:0)
自Pandas 1.0.1发行以来,read_excel()现在具有xlsb支持
?bar