Python - Converting XLSX to PDF

后端 未结 3 1090
长发绾君心
长发绾君心 2020-12-06 13:14

I have always used win32com module in my development server to easily convert from xlsx to pdf:

o = win32com.client.Di         


        
相关标签:
3条回答
  • 2020-12-06 14:00

    Edit: Thanks for the down vote but this is a far more efficient method than trying to load a redundant script that is hard to find and was wrttien in Python 2.7.

    1. Load excel spread sheet into a DataFrame
    2. Write the DataFrame to a HTML file
    3. Convert the html file to an image.
    
        dirname, fname = os.path.split(source)
        basename = os.path.basename(fname)
    
        data = pd.read_excel(source).head(6)
    
        css = """
    
        """
    
        text_file = open(f"{basename}.html", "w")
        # write the CSS
        text_file.write(css)
        # write the HTML-ized Pandas DataFrame
        text_file.write(data.to_html())
        text_file.close()
    
        imgkitoptions = {"format": "jpg"}
    
        imgkit.from_file(f"{basename}.html", f'{basename}.png', options=imgkitoptions)
    
        try:
            os.remove(f'{basename}.html')
        except Exception as e:
            print(e)
    
        return send_from_directory('./', f'{basename}.png')
    

    Taken from here https://medium.com/@andy.lane/convert-pandas-dataframes-to-images-using-imgkit-5da7e5108d55

    Works really well, I have XLSX files converting on the fly and displaying as image thumbnails on my application.

    0 讨论(0)
  • 2020-12-06 14:04

    As my original answer was deleted and is eventually a bit useful, I repost it here.

    You could do it in 3 steps:

    1. excel to pandas: pandas.read_excel
    2. pandas to HTML: pandas.DataFrame.to_html
    3. HTML to pdf: python-pdfkit (git), python-pdfkit (pypi.org)
    import pandas as pd
    import pdfkit
    
    df = pd.read_excel("file.xlsx")
    df.to_html("file.html")
    pdfkit.from_file("file.html", "file.pdf")
    

    install:

    sudo pip3.6 install pandas xlrd pdfkit
    sudo apt-get install wkhtmltopdf 
    
    0 讨论(0)
  • 2020-12-06 14:17
    from openpyxl import load_workbook
    from PDFWriter import PDFWriter
    
    workbook = load_workbook('fruits2.xlsx', guess_types=True, data_only=True)
    worksheet = workbook.active
    
    pw = PDFWriter('fruits2.pdf')
    pw.setFont('Courier', 12)
    pw.setHeader('XLSXtoPDF.py - convert XLSX data to PDF')
    pw.setFooter('Generated using openpyxl and xtopdf')
    
    ws_range = worksheet.iter_rows('A1:H13')
    for row in ws_range:
        s = ''
        for cell in row:
            if cell.value is None:
                s += ' ' * 11
            else:
                s += str(cell.value).rjust(10) + ' '
        pw.writeLine(s)
    pw.savePage()
    pw.close()
    

    I have been using this and it works fine

    0 讨论(0)
提交回复
热议问题