
Таблицы PDF часто содержат данные, которые нужно сортировать, фильтровать или анализировать в Excel. Копирование и вставка могут оставить эти данные в одном столбце или нарушить их структуру строк. Встроенная функция Excel Из PDF предлагает более прямой способ импорта распознанных таблиц в ячейки листа.
В этом руководстве объясняется, как импортировать таблицы PDF с помощью Power Query, объединять таблицы на нескольких страницах, сохранять ведущие нули и проверять пробелы в перенесенном тексте. Оно также включает рабочий процесс на Python для извлечения таблиц из папки с PDF-файлами в книги Excel.
Приведенные ниже шаги Power Query используют Excel для Windows с доступным соединителем Из PDF. Начните с текстового PDF; отсканированные страницы требуют обработки OCR, прежде чем можно будет извлечь их табличные данные.
- Импорт таблиц PDF в Excel с помощью Power Query
- Объединение таблиц на нескольких страницах
- Сохранение ведущих нулей в столбцах идентификаторов
- Проверка перенесенного текста и загрузка итоговой таблицы
- Автоматизация извлечения таблиц PDF в Excel с помощью Python
- Часто задаваемые вопросы
- Заключение
1. Импорт таблиц PDF в Excel с помощью Power Query
Функция Excel Из PDF позволяет определять таблицы в PDF и импортировать их данные в ячейки листа. Откройте таблицу в редакторе Power Query, чтобы просмотреть ее содержимое перед загрузкой.
- Откройте Excel и выберите Данные → Получить данные → Из файла → Из PDF.
- Выберите PDF-файл и нажмите Импорт.
- В окне Навигатор выберите обнаруженную запись Таблица, чтобы просмотреть ее содержимое. Убедитесь, что она содержит нужные строки и столбцы.
- Нажмите Преобразовать данные, чтобы открыть редактор Power Query.
- Проверьте таблицу, затем выберите Главная → Закрыть и загрузить, чтобы загрузить ее на лист Excel.
Если предварительный просмотр уже корректен и корректировки не требуются, можно нажать Загрузить прямо в Навигаторе.
Для таблиц, требующих объединения или очистки, внесите изменения, описанные в следующих разделах, перед загрузкой итогового результата.
2. Объединение таблиц на нескольких страницах
Power Query может распознать таблицу, занимающую несколько страниц PDF, как одну таблицу или как отдельные таблицы. Проверьте записи в Навигаторе, прежде чем решать, добавлять ли их.
Когда Power Query обнаруживает одну таблицу
Согласованные заголовки, повторяющиеся на каждой странице, помогают Power Query распознать всю таблицу. В Навигаторе она может отображаться как одна запись, например Table001 (Страница 1–3).
Выберите эту запись и проверьте предварительный просмотр. Если она содержит все необходимые записи, нажмите Загрузить или выберите Преобразовать данные, чтобы сначала внести изменения. Операция добавления не требуется.
Когда Power Query обнаруживает отдельные таблицы
Если только первая страница содержит заголовки, Power Query может определить страницы-продолжения как отдельные таблицы с общими именами столбцов, например Column1, Column2 и Column3.
Чтобы объединить их:
- В Навигаторе включите Выбрать несколько элементов.
- Выберите таблицы, принадлежащие одной таблице, охватывающей несколько страниц, и проверьте их предварительные просмотры.
- Нажмите Преобразовать данные. Каждая выбранная таблица отображается как отдельный запрос в редакторе Power Query.
- Используйте заголовки первой таблицы как образец и переименуйте соответствующие столбцы в таблицах-продолжениях. Например, переименуйте
Column1вEmployee ID, аColumn2вFull Name.
- Перед добавлением убедитесь, что соответствующие имена столбцов точно совпадают, включая пробелы.
Заголовки из одного слова, такие как Department, обычно не нужно вводить заново. Обратите особое внимание на заголовки из нескольких слов, особенно на те, которые переносятся на несколько строк в PDF.
Например, Employee и ID могут отображаться на отдельных строках в исходной ячейке. Навигатор может показать заголовок как Employee ID, даже если его фактическое имя содержит разрыв строки, а не пробел. Переименование столбца другой таблицы в Employee ID с обычным пробелом создаст несоответствие.
Для перенесенного заголовка щелкните столбец правой кнопкой мыши в первом запросе и выберите Переименовать. Выделите все существующее имя и вручную введите однострочное имя, например Employee ID. Используйте это точное имя для соответствующих столбцов в других запросах. Не копируйте исходный перенесенный заголовок, так как он может сохранить скрытый разрыв строки.
Когда имена столбцов станут согласованными:
- Выберите один запрос и выберите Главная → Добавить запросы ▼ → Добавить запросы как новый.
- Выберите Две таблицы или Три или более таблиц в зависимости от количества запросов.
- Выберите таблицы для добавления. Для трех или более таблиц добавьте их в список Таблицы для добавления и расположите их в порядке страниц PDF.
- Нажмите OK, чтобы создать объединенный запрос.
Power Query добавляет данные путем сопоставления имен столбцов, а не их позиций. Если результат содержит два внешне одинаковых столбца или неожиданные значения null, вернитесь к исходным запросам и проверьте их имена на наличие скрытых разрывов строк или лишних пробелов.
Наконец, перед загрузкой в Excel проверьте объединенную таблицу на наличие пропущенных записей, повторяющихся строк заголовков и нежелательного текста нижнего колонтитула страницы.
3. Сохранение ведущих нулей в столбцах идентификаторов
Идентификаторы сотрудников, коды продуктов и подобные идентификаторы могут содержать ведущие нули. Если Power Query назначает этим значениям числовой тип данных, идентификатор, например 00123, может отображаться как 123.
Чтобы сохранить исходный идентификатор:
- В редакторе Power Query выберите столбец Employee ID.
- Откройте меню Тип данных и измените Целое число на Текст.
- Если появится запрос на замену существующего преобразования типа, выберите Заменить текущий.
- Убедитесь, что значения отображают ведущие нули, например
00123вместо123.
Рассматривайте идентификаторы как текст, даже если они содержат только цифры. Их назначение — идентифицировать записи, а не служить значениями для вычислений.
Внесите это изменение перед загрузкой данных в Excel. Если смена типа не восстанавливает нули, сравните значения с исходным PDF; отсутствующие нули нельзя надежно восстановить, если только идентификаторы не подчиняются известному правилу фиксированной длины.
4. Проверка перенесенного текста и загрузка итоговой таблицы
Текст, который переносится на несколько строк в ячейке PDF, при импорте может быть объединен без пробела. Например, имя, отображаемое как Robert на одной строке и Williams на следующей, может стать RobertWilliams.
Сверьте столбцы, содержащие имена, адреса и описания, с исходным PDF. Исправляйте подтвержденные ошибки интервалов по отдельности. Для конкретного неверного значения выберите столбец и используйте Преобразовать → Заменить значения, чтобы заменить его правильным текстом.
Не применяйте общее правило, вставляющее пробелы везде, где текст был перенесен. Одно слово также может переноситься по строкам: Coordinato вместе с r должно стать Coordinator без пробела.
Перед загрузкой итоговой таблицы убедитесь, что:
- Количество записей совпадает с исходной таблицей.
- Записи на границах страниц полны.
- Столбцы идентификаторов сохраняют ведущие нули.
- Перенесенный текст имеет правильные интервалы.
- Числовые столбцы и столбцы дат используют подходящие типы данных.
Затем выберите Главная → Закрыть и загрузить ▼ → Закрыть и загрузить в, выберите Таблица и укажите целевой лист.
Если вы добавили несколько запросов уровня страницы, загружайте только итоговый объединенный запрос как таблицу листа. Для промежуточных запросов установите Только создать подключение, чтобы они оставались доступными для объединенного запроса без создания отдельных таблиц листа.
5. Автоматизация извлечения таблиц PDF в Excel с помощью Python
Power Query предоставляет интерактивный способ импорта и подготовки табличных данных из PDF. Когда нужно многократно обрабатывать несколько PDF-файлов, можно автоматизировать извлечение с помощью Python.
В следующем примере используется Spire.PDF for Python для обнаружения таблиц и чтения содержимого их ячеек, а также openpyxl — библиотека Excel с открытым исходным кодом — для записи извлеченных данных в файлы XLSX. Каждый PDF создает одну книгу, при этом каждая обнаруженная таблица сохраняется на отдельном листе.
Установка библиотек
Установите оба пакета:
pip install Spire.PDF openpyxl
Код пакетного извлечения
Обновите INPUT_FOLDER и OUTPUT_FOLDER в соответствии с вашими каталогами. Скрипт читает PDF-файлы непосредственно из входной папки, проверяет каждую страницу и сохраняет полученные книги в выходную папку.
from pathlib import Path
from spire.pdf import PdfDocument, PdfTableExtractor
from openpyxl import Workbook
from openpyxl.styles import Alignment
INPUT_FOLDER = Path(r"E:\Documents\input")
OUTPUT_FOLDER = Path(r"E:\Documents\output")
def extract_pdf_tables_to_excel(pdf_path, output_path):
doc = PdfDocument()
try:
doc.LoadFromFile(str(pdf_path))
extractor = PdfTableExtractor(doc)
workbook = Workbook()
workbook.remove(workbook.active)
table_count = 0
# Extract tables from every page.
for page_index in range(doc.Pages.Count):
tables = extractor.ExtractTable(page_index)
if tables is None:
continue
for table_index in range(len(tables)):
table = tables[table_index]
row_count = table.GetRowCount()
column_count = table.GetColumnCount()
if row_count == 0 or column_count == 0:
continue
sheet = workbook.create_sheet(
title=f"Page{page_index + 1}_Table{table_index + 1}"
)
for row_index in range(row_count):
for column_index in range(column_count):
text = table.GetText(row_index, column_index)
cell = sheet.cell(
row=row_index + 1,
column=column_index + 1
)
# Preserve extracted values as literal text.
cell.value = text if text is not None else ""
cell.data_type = "s"
cell.number_format = "@"
cell.alignment = Alignment(
vertical="top",
wrap_text=True
)
for column_cells in sheet.columns:
column_letter = column_cells[0].column_letter
sheet.column_dimensions[column_letter].width = 22
table_count += 1
if table_count == 0:
print(f"Skipped: {pdf_path.name} — no tables detected.")
return
workbook.save(str(output_path))
print(
f"Saved: {output_path.name} "
f"({table_count} tables)"
)
finally:
doc.Close()
def main():
if not INPUT_FOLDER.is_dir():
raise FileNotFoundError(
f"Input folder not found: {INPUT_FOLDER}"
)
OUTPUT_FOLDER.mkdir(parents=True, exist_ok=True)
pdf_files = sorted(
(
path for path in INPUT_FOLDER.iterdir()
if path.is_file() and path.suffix.lower() == ".pdf"
),
key=lambda path: path.name.lower()
)
if not pdf_files:
print("No PDF files found in the input folder.")
return
for pdf_path in pdf_files:
output_path = OUTPUT_FOLDER / f"{pdf_path.stem}.xlsx"
try:
extract_pdf_tables_to_excel(pdf_path, output_path)
except Exception as error:
print(f"Failed: {pdf_path.name} — {error}")
if __name__ == "__main__":
main()
Скрипт вызывает ExtractTable() для каждой страницы PDF, затем читает каждую обнаруженную таблицу с помощью GetRowCount(), GetColumnCount() и GetText(). Извлеченные ячейки записываются в соответствующие строки и столбцы нового листа.
Файлы без обнаруженных таблиц пропускаются. Если обработка одного PDF завершается неудачно, скрипт сообщает об ошибке и продолжает работу с остальными файлами.
Вам также может понравиться: Извлечение таблиц из PDF с помощью Python
Вывод и замечания

PDF-файл с именем report.pdf создает книгу с именем report.xlsx. Имена листов указывают исходную страницу и таблицу, например Page1_Table1, Page1_Table2 и Page2_Table1.
Все извлеченные значения записываются как текст. Это сохраняет ведущие нули, присутствующие в извлеченном содержимом, например 00123, и предотвращает интерпретацию текста, начинающегося с =, как формулы Excel. Суммы и даты также остаются текстом и могут потребовать преобразования перед вычислениями или анализом на основе дат.
В этом примере экспортируются данные таблицы, а не воспроизводится исходный внешний вид PDF. Он не воссоздает исходные шрифты, границы или форматирование объединенных ячеек и не исправляет ошибки извлечения, такие как отсутствующие пробелы. Если таблица, охватывающая несколько страниц, обнаруживается как отдельные таблицы, эти части сохраняются на отдельных листах, а не объединяются автоматически.
Перед использованием данных сверьте созданную книгу с исходным PDF. Повторный запуск скрипта перезаписывает существующие XLSX-файлы с теми же именами в выходной папке.
6. Часто задаваемые вопросы
Почему я не могу найти параметр «Из PDF» в Excel?
Доступные соединители зависят от версии и платформы Excel. Проверьте Данные → Получить данные → Из файла на наличие Из PDF. Если его нет, проверьте, поддерживает ли ваша установка соединитель PDF. Шаги импорта Power Query в этом руководстве предполагают, что этот параметр доступен.
Можно ли импортировать таблицу из отсканированного PDF с помощью этих методов?
Отсканированный PDF хранит содержимое страниц в виде изображений. Показанные здесь рабочие процессы не включают OCR, поэтому они предназначены для текстовых PDF. Для отсканированных документов используйте инструмент OCR, который может распознавать структуру таблиц и экспортировать структурированные данные, затем сверьте извлеченные значения с источником.
Будет ли импортированная таблица Excel выглядеть точно так же, как PDF?
Эти методы сосредоточены на извлечении данных ячеек для использования в Excel. Они не гарантируют воспроизведение шрифтов, цветов, границ, ширины столбцов или объединенных ячеек PDF. Примените форматирование Excel после импорта, если вам нужен определенный внешний вид.
Можно ли обновить таблицу Power Query при изменении PDF?
Да. Если исходный PDF обновлен по тому же пути к файлу, используйте Данные → Обновить все, чтобы повторно запустить запрос. После этого проверьте результат, особенно если изменилось количество страниц, обнаруженных таблиц или структура столбцов. Такие изменения могут потребовать корректировки запроса.
7. Заключение
Импорт таблиц PDF в Excel включает не только обнаружение строк и столбцов. Power Query предоставляет практичную отправную точку, но следующие шаги зависят от результата: таблица, охватывающая несколько страниц, может быть готова к загрузке как одна таблица, или ее разделы могут нуждаться в согласовании имен столбцов перед добавлением. Ведущие нули и пробелы в перенесенном тексте также заслуживают внимания, поскольку внешне чистая таблица все еще может содержать измененные значения.
Для повторяющихся задач рабочий процесс на Python распространяет этот процесс на папку с PDF-файлами, сохраняя каждый файл как книгу с отдельными листами для обнаруженных таблиц. Выберите рабочий процесс, подходящий для вашей нагрузки, затем сравните вывод с исходным PDF — особенно идентификаторы, многострочный текст и записи на границах страниц. Эти проверки помогают убедиться, что импортированные данные готовы к фильтрации, вычислениям и дальнейшему анализу.
См. также
- Бесплатное преобразование PDF в Excel — текстовые и отсканированные PDF
- Как печатать PDF в Windows: 5 простых и эффективных способов
- Копирование текста из защищенного PDF: 5 бесплатных и простых способов
- 5 эффективных способов преобразовать PDF в черно-белый
- Как выделить текст в PDF: 5 простых методов