конвертировать Excel лист, который содержит микро-в PDF, используя Python - PullRequest
0 голосов
/ 26 июня 2019

У меня есть лист Excel, в котором есть микро (VBA). Я пытаюсь преобразовать Excel в PDF-документ. Я могу конвертировать Excel в PDF, но он работает только для ячеек не VBA. Клетки, которые имеют свою популяцию в виде NaN или с форумной клеткой.

Я устал использовать библиотеку Python openpyxl, pandas как dataframe и reportlab для генерации pdf документа.

Когда я пытаюсь прочитать Excel, у которого vba по умолчанию имеет значение NaN или с формулой. Если я использую панд, я получаю NaN. Если я использую openpyxl, я получаю формулу.

Дайте мне знать, что у кого-нибудь есть решение на python или какой-либо другой библиотеке, которое поможет мне получить данные, а не формулу или nan.

мой текущий код.

Чтение Excel только с получением данных NaN

workbook = load_workbook(OUTPUT_FOLDER+'/output.xlsm', data_only=True)
worksheet = workbook.get_sheet_by_name('Summary  Inputs')
ws_range = worksheet.iter_rows()

Чтение Excel с микро

workbook = load_workbook(OUTPUT_FOLDER+'/output.xlsm', vba=True)
worksheet = workbook.get_sheet_by_name('Summary  Inputs')
ws_range = worksheet.iter_rows()

заполнение данных из Excel в PDF документ

pw = PDFWriter(OUTPUT_FOLDER+'/out.pdf')
            pw.setFont('Courier', 12)
            pw.setHeader('Sizer Report based on input')
            pw.setFooter('Automated Generated Report')


            in_line_total_chars=100
            longest_char_length=58
            for row in ws_range:
                try:    
                    string = ''

                    length_left_side=0
                    for cell in row:

                        left_adjust=0
                        if length_left_side==0:
                            length_left_side=len(cell.value)
                            left_adjust=longest_char_length-length_left_side+2
                        if cell.value is None:
                            string += ' ' * 11
                        else:
                            spaces=' '*left_adjust
                            string += str(cell.value)+spaces



                    pw.writeLine(' ')
                    pw.writeLine(string)
                except Exception as err:
                    logger.error(str(datetime.now())+' '+str(err))      

            pw.savePage()
            pw.close()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...