Я работал над созданием сценария, который конвертирует файлы Excel в csv для дальнейшей обработки в некоторых наших инструментах.
Для xls, xlsx и xlsm я нашел решение открыть файл как текстовый объект или использовать панды. При обнаружении файлов xlsb я попал в пакет pyxlsb, который работает ... обратитесь к коду, используемому здесь Как я могу преобразовать файл XLSB в csv, используя python?
К сожалению, я заметил, что значения int () в файле xlsb, кажется, конвертируются в float и, следовательно, записываются в мой CSV-файл как float. Это явно нежелательно.
В основном я ищу решение типа 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 в выходных данных. Я бы хотел, чтобы это было ''.