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.

3 responses to “Convert Excel File to PDF in Python”

  1. malik says:

    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?

  2. mages says:

    its not working is there any other ways facing an error :No module named ‘win32com’
    changes the module still facing the error

    • Siddhesh says:

      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()

Leave a Reply

Your email address will not be published. Required fields are marked *