Convert Excel File to PDF in Python
In this tutorial, we will learn to convert Excel Files to PDF in python. We will learn a bit about PyWin32 library.
PyWin32 is a Python library for Microsoft Windows that enables the Win32 application programming interface (API) features on Python. To install the PyWin32 library, open command prompt/ Terminal and write
pip install pywin32
Approach
Let’s see a fundamental approach to convert Excel files (.xlsx or .xls format) to PDF format.
- Create a COM object using Dispatch() function.
- Read the Excel file pass “Excel.Application” inside the Dispatch function.
- Write Excel file path.
- Convert Excel into PDF format using ExportAsFixedFormat() and pass the path to which you want to save the pdf file.
Import Client submodule from win32com library
# Import Library from win32com import client
client.Dispatch() function will help to extract the excel application from windows system. Workbook methods will help to read the excel file.
# Opening Microsoft Excel excel = client.Dispatch("Excel.Application") # Read Excel File sheets = excel.Workbooks.Open('Enter Excel file path') work_sheets = sheets.Worksheets[0]
Converting Excel file to PDF file. ExportAsFixedFormat() method is used to convert a workbook into either PDF format.
# Converting into PDF File work_sheets.ExportAsFixedFormat(0, 'Enter PDF file path')
Combining all code
# Import Library from win32com import client # Opening Microsoft Excel excel = client.Dispatch("Excel.Application") # Read Excel File sheets = excel.Workbooks.Open('Enter Excel file path') work_sheets = sheets.Worksheets[0] # Converting into PDF File work_sheets.ExportAsFixedFormat(0, 'Enter PDF file path')
We have successfully converted Excel file to PDF file format using Python.
I have tried with this method but is is not working for xlsm . Could you please provide a efficent python example to convert excel workbook xlsm into Pdf?
its not working is there any other ways facing an error :No module named ‘win32com’
changes the module still facing the error
from flask import Flask, send_file,render_template
from openpyxl import load_workbook
from fpdf import FPDF
app = Flask(__name__)
@app.route(“/”)
def index():
return render_template(“Original.html”)
@app.route(‘/download’)
def download_file():
create_pdf()
path = “Project.pdf”
send_file(path, as_attachment=True)
def create_pdf():
workbook = load_workbook(‘Project.xlsx’)
sheet = workbook.active
23
pdf = FPDF()
pdf.add_page()
for row in sheet.iter_rows():
for cell in row:
pdf.set_font(‘Arial’, ‘B’, 16)
pdf.cell(50, 10, str(cell.value))
pdf.output(‘example.pdf’, ‘F’)
if __name__ == ‘__main__’:
app.run()