Импорт данных из Excel в таблицы LaTeX (pgfplotstable)
Почему ручной перенос таблиц из Excel в LaTeX — это тупик
В ходе научных исследований и инженерных расчетов данные непрерывно
меняются: провели новую серию измерений, пересчитали формулу в Excel — и вся таблица из 50 строк
изменилась. Если переносить каждую ячейку в LaTeX вручную через амперсанды & и
слэши \\, вы потратите часы и неизбежно допустите опечатки.
Идеальный инженерный подход — связать файл данных напрямую с документом LaTeX. При обновлении расчетов документ пересобирается автоматически с новыми числами. А чтобы строки данных не выглядели тесно, используйте макрос для настройки высоты строк в таблицах.
Подготовка данных: экспорт из Microsoft Excel в формат CSV
В Excel сохраните нужный лист через меню «Сохранить как» →
«CSV (разделители — запятые)» или «Текстовый файл с разделителями табуляции». В
русскоязычной версии Excel разделителем столбцов традиционно выступает точка с запятой
;, а десятичным разделителем — запятая ,.
Конвертировать Excel в таблицу LaTeX: базовый вызов pgfplotstable
Для чтения данных подключите пакет pgfplotstable (он входит в состав TeX Live и надстраивается над pgfplots):
\usepackage{pgfplotstable}
\usepackage{booktabs}
\pgfplotsset{compat=1.18}
Теперь, чтобы конвертировать excel в таблицу latex, достаточно одной строки:
\pgfplotstabletypeset[col sep=semicolon]{measurements.csv}
Если числа в файле записаны с десятичной запятой, добавьте опцию
read comma as period — подробнее в следующем разделе.
Если импортируемый массив данных слишком широк для книжной страницы, оберните его в окружение для вращения широких таблиц sidewaystable.
Pgfplotstable чтение CSV: разделители, кодировка и русская запятая
При использовании pgfplotstable чтение csv можно настроить с ювелирной точностью под российские стандарты:
\pgfplotstabletypeset[
col sep=semicolon, % Разделитель колонок (точка с запятой из Excel)
string type, % Если в колонках есть текст
every head row/.style={
before row=\toprule,
after row=\midrule
},
every last row/.style={
after row=\bottomrule
}
]{data.csv}
Если в CSV содержатся вещественные числа, которые нужно автоматически округлить до 2 знаков после запятой и заменить десятичную точку на русскую запятую по ГОСТу:
\pgfplotstabletypeset[
col sep=comma,
every numeric column/.style={
precision=2,
fixed,
dec sep align,
/pgf/number format/use comma, % десятичная запятая при выводе
set thousands separator={\,}
}
]{experiment.csv}
Без опции use comma pgfplotstable выводит десятичную
точку: 1.23 вместо 1,23.
Главная ловушка русского Excel — числа в самом файле записаны с
запятой («2,5»), а pgfplotstable ждёт точку. При col sep=semicolon такой файл
останавливает сборку с ошибкой Could not parse input '2,5' as a floating point
number. Опция read comma as period читает запятую как десятичный
разделитель, а use comma возвращает её при выводе:
\pgfplotstabletypeset[col sep=semicolon, read comma as period,
/pgf/number format/use comma]{data.csv}
Профессиональная стилизация: шапка, границы и округление
Вы можете переименовывать столбцы таблицы прямо в LaTeX, не меняя заголовки в самом файле CSV:
\pgfplotstabletypeset[
col sep=semicolon,
columns/time/.style={column name={Время $t$, с}},
columns/voltage/.style={column name={Напряжение $U$, В}},
columns/current/.style={column name={Ток $I$, мА}}
]{measurements.csv}
Практические советы
Храните CSV рядом с исходником .tex
Поместите файл data.csv в ту же папку проекта, что и основной файл
main.tex, чтобы компилятор сразу находил его по относительному пути.
Интеграция в Labkeeper
В онлайн-редакторе Labkeeper загрузите CSV в файловый менеджер проекта (файлы доступны после
входа) и нажмите «Выполнить»: таблица появится в PDF после сборки. Промежуточные суммы
pgfplotstable сам не считает — их нужно описать в коде или подготовить заранее. Для расчётов
удобен вычислительный сегмент Labkeeper: функция load_csv читает колонки файла в
массивы, а table выводит результат таблицей.