Skip to content
Excel To Pdf

Guide

Batch Convert Excel to PDF

Three ways to convert multiple spreadsheets to PDF without repeating the same steps for every file.

Converting one Excel file to PDF is straightforward. Converting twenty is tedious — open, export, save, repeat. If you regularly deal with monthly reports, invoices, or data exports that need to go out as PDFs, you need a batch workflow.

Below are three methods, from quickest to most customizable. The first needs nothing installed; the second works inside Excel; the third is for developers or anyone comfortable running a script.

Method 1: Free Online Batch Converter (Fastest)

The Excel To Pdf tool on this site converts up to 20 spreadsheets in one go. Everything runs in your browser — files never leave your device.

  1. Open the tool. Go to excel-to-pdf.app.
  2. Select multiple files. Drag a batch of XLSX, XLS, ODS, or CSV files onto the drop zone. You can also click “Choose Excel files” and select multiple files in the file picker (hold Ctrl or to multi-select).
  3. Pick shared settings. Choose page size (A4, Letter, Legal), orientation (auto, portrait, landscape), and whether to include gridlines and sheet titles. These settings apply to every file in the batch.
  4. Download individually or as a ZIP. Each file converts within seconds. Click “Download PDF” next to any single result, or hit “Download all” to get every PDF in one ZIP archive.

Why this works well for batches

  • No upload. The conversion uses JavaScript running in your browser tab. Your files stay on your machine, which also means no server queue — all 20 files process as fast as your CPU allows.
  • Consistent output. Every file uses the same page size, orientation, and formatting rules. No risk of accidentally exporting one report as Letter and another as A4.
  • Works offline. After the page loads once, you can disconnect from the internet and keep converting. Useful on planes, in offices with restricted networks, or anywhere connectivity is spotty.

Method 2: VBA Macro Inside Excel

If you prefer staying inside Microsoft Excel and have the desktop version (not Excel Online), a short VBA macro can loop through every XLSX file in a folder and save each as PDF.

Sub BatchExcelToPdf()
    Dim folderPath As String
    Dim fileName As String
    Dim wb As Workbook

    ' Pick the folder containing your Excel files
    With Application.FileDialog(msoFileDialogFolderPicker)
        .Title = "Select folder with Excel files"
        If .Show = -1 Then
            folderPath = .SelectedItems(1) & "\"
        Else
            Exit Sub
        End If
    End With

    Application.ScreenUpdating = False
    fileName = Dir(folderPath & "*.xls*")

    Do While fileName <> ""
        Set wb = Workbooks.Open(folderPath & fileName)
        wb.ExportAsFixedFormat _
            Type:=xlTypePDF, _
            fileName:=folderPath & Replace(fileName, ".xlsx", ".pdf"), _
            Quality:=xlQualityStandard
        wb.Close SaveChanges:=False
        fileName = Dir()
    Loop

    Application.ScreenUpdating = True
    MsgBox "Done — all files converted."
End Sub

To use this macro:

  1. Open Excel and press Alt+F11 to open the VBA editor.
  2. Go to Insert → Module and paste the code above.
  3. Press F5 to run. Pick the folder that holds your Excel files. The macro creates a PDF next to each file.

When to use this: you have dozens or hundreds of files in one folder, you need Excel’s native rendering (charts, conditional formatting, print areas), and you are on Windows.

Limitations: requires a desktop Excel license. The macro does not work on Mac without modifications (the file-picker dialog differs). It also opens each workbook sequentially, so very large batches take a while.

Method 3: Python Script for Full Automation

For recurring batch jobs — say, converting a folder of monthly reports every quarter — a Python script gives you the most control. The openpyxl + fpdf2 combination works cross-platform without needing Excel installed.

import os
from pathlib import Path
from openpyxl import load_workbook
from fpdf import FPDF

input_dir = Path("./reports")
output_dir = Path("./pdfs")
output_dir.mkdir(exist_ok=True)

for xlsx in input_dir.glob("*.xlsx"):
    wb = load_workbook(xlsx)
    pdf = FPDF(orientation="L", format="A4")

    for sheet in wb.worksheets:
        pdf.add_page()
        pdf.set_font("Helvetica", size=9)
        for row in sheet.iter_rows(values_only=True):
            line = "  |  ".join(
                str(cell) if cell is not None else ""
                for cell in row
            )
            pdf.cell(0, 6, line, new_x="LMARGIN", new_y="NEXT")

    pdf.output(str(output_dir / f"{xlsx.stem}.pdf"))
    print(f"Converted: {xlsx.name}")

print("All done.")

Install dependencies with pip install openpyxl fpdf2. Point input_dir at your folder, run the script, and collect the PDFs from the output folder.

When to use this: you want a scheduled, repeatable process (cron job, CI pipeline), need to handle hundreds of files, or want to customize PDF layout in code.

Limitations: the basic script above produces plain-text PDFs without column alignment or styling. For production-quality output with proper table formatting, the browser-based converter or Excel’s native export will look better with no extra code.

Which Method Should You Pick?

 Online converterVBA macroPython script
CostFreeRequires Excel licenseFree
Install neededNoneExcel desktopPython
Max files per batch20UnlimitedUnlimited
PlatformAny browserWindowsAny OS
File uploadNone (local)N/AN/A
SchedulingManualManualCron / CI
Best forQuick batchesOffice power usersAutomation

For most people, the browser-based online converter is the fastest way to batch-convert Excel files. Drop up to 20 files, grab a ZIP, done. If you need Excel’s native rendering for charts or conditional formatting, the VBA macro handles that. And if you are building an automated pipeline, the Python approach scales to any number of files.

Tips for Smoother Batch Conversions

  • Standardize your spreadsheets first. Batch conversion works best when files share a similar structure — same column count, same header row. If one file is a 3-column list and another is a 20-column pivot table, the PDF settings that look good for one may not suit the other.
  • Use auto orientation. The online converter detects wide sheets and switches to landscape automatically. Leave orientation on “Auto” unless every file in the batch has the same layout.
  • Remove empty trailing rows. Spreadsheets often have blank rows at the bottom that add unnecessary pages. Clean them up before converting to avoid bloated PDFs.
  • Name files clearly before converting. The output PDF takes its name from the input file. If your source files are Book1.xlsx, Book2.xlsx, your PDFs will be equally unhelpful. Rename them first.

For step-by-step instructions on converting a single file, see our guide on how to convert Excel to PDF. If you need to go the other way — pulling data from PDFs back into spreadsheets — check how to convert PDF to Excel.

Frequently asked questions

How many Excel files can I batch-convert to PDF at once?
The online converter at excel-to-pdf.app handles up to 20 files per batch. Each file can be up to 50 MB. If you need more than 20, convert them in batches of 20 or use the Python script method, which has no file-count limit.
Do all sheets in each workbook get included in the PDF?
By default, yes — every non-empty sheet becomes a section of the PDF. You can switch to 'First sheet only' in the tool's settings if you only need the primary sheet from each file.
Can I batch-convert Excel to PDF on a phone or tablet?
Yes. The browser-based converter works on any device with a modern browser — iPhone, iPad, Android. Drag-and-drop is replaced by the file picker, but the batch capability is the same.
Will formatting survive the batch conversion?
Column widths, merged cells, number formats, and text alignment all carry over. The converter auto-detects wide sheets and switches to landscape orientation. For detailed formatting tips, see our guide on converting Excel to PDF.