Python — Excel в HTML (формат сохранения)

#python #excel

Вопрос:

Я пытаюсь преобразовать файл Excel в файл HTML, сохраняя при этом формат книги.

введите описание изображения здесь

Используя Excel, я могу переключиться с xlsx на htm: Файл -> Сохранить как ->> Веб-страница (*.html, *.htm)

введите описание изображения здесь

Используя Python, я всегда получаю какую-то тарабарщину, подобную изображению ниже, как workbook.htm или workbook.html.

введите описание изображения здесь

 import xlwings as xw
file_path = "*.xlsx"
excel_app = xw.App(visible=False)
wb = excel_app.books.open(file_path)
wb.save("*.html")
wb.save("*.htm")
 
 from xlsx2html import xlsx2html
xlsx2html('*xlsx', '*.htm')
xlsx2html('*xlsx', '*.html')
 

Я использовал фиктивные файлы, я просто пытаюсь перейти из файла xlsx в файл htm/hmtl, используя Python и сохраняя формат, например, цвета фона, границы и т. Д.

Ответ №1:

У меня раньше была такая проблема. Я также использовал библиотеку xlwings, настроил ее и добился успеха. Вы находите и редактируете в файле xlwings/_xlwindows.py следующим образом:

 def save(self, path=None):
    saved_path = self.xl.Path
    source_ext = os.path.splitext(self.name)[1] if saved_path else None
    target_ext = os.path.splitext(path)[1] if path else '.xlsx'
    if saved_path and source_ext == target_ext:
        file_format = self.xl.FileFormat
    else:
        ext_to_file_format = {'.xlsx': FileFormat.xlOpenXMLWorkbook,
                              '.xlsm': FileFormat.xlOpenXMLWorkbookMacroEnabled,
                              '.xlsb': FileFormat.xlExcel12,
                              '.xltm': FileFormat.xlOpenXMLTemplateMacroEnabled,
                              '.xltx': FileFormat.xlOpenXMLTemplateMacroEnabled,
                              '.xlam': FileFormat.xlOpenXMLAddIn,
                              '.xls': FileFormat.xlWorkbookNormal,
                              '.xlt': FileFormat.xlTemplate,
                              '.xla': FileFormat.xlAddIn,
                              '.html': FileFormat.xlHtml # ---> add new
                              }