У меня есть лист 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()