Типы данных преобразования Python XLSB в CSV - PullRequest
0 голосов
/ 09 ноября 2018

Я работал над созданием сценария, который конвертирует файлы 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 в выходных данных. Я бы хотел, чтобы это было ''.

...