Отчеты и Аналитика · 12 мин
Как при сохранении файла в Excel из 1С сохранить формат текста
Разбираем, почему при выгрузке из 1С в Excel теряется форматирование текста, и как сохранить шрифты, переносы, объединения ячеек и числовые форматы в типовых и самописных отчетах.
При выгрузке отчета или табличного документа из 1С в Excel пользователи часто сталкиваются с тем, что итоговый файл выглядит иначе, чем на экране: пропадают переносы строк, сливаются данные в одну ячейку, теряются шрифты и границы, а числа превращаются в текст или наоборот. Причина почти всегда кроется не в самой 1С, а в способе сохранения и в том, как именно сформирован табличный документ.
Формат текста в Excel из 1С сохраняется корректно, если соблюдены три условия: выбран правильный тип файла при сохранении, в табличном документе используются штатные свойства оформления (а не «рисование» текстом), и данные в ячейках имеют корректный тип. Нарушение любого из этих условий приводит к потере форматирования уже на этапе выгрузки, и вернуть его в самом Excel бывает сложно.
Ниже разберем, какие форматы сохранения доступны в 1С, чем они отличаются, как настроить табличный документ, чтобы форматирование пережило выгрузку, и что делать, если файл уже сохранен с потерями.
Какие форматы сохранения предлагает 1С и что выбрать
При сохранении табличного документа через меню «Файл → Сохранить как» (или «Сохранить копию») 1С предлагает несколько типов файлов: «Лист Excel (*.xlsx)», «Лист Excel 95/97», «Электронная таблица OpenDocument», HTML, PDF, MXL и другие. От выбора типа напрямую зависит, какая часть форматирования дойдет до Excel.
Оптимальный вариант для передачи форматирования — современный формат XLSX. Он корректно переносит шрифты, цвета, границы, объединенные ячейки, переносы по словам и числовые форматы. Устаревший формат «Лист Excel 95/97» имеет ограничения по количеству строк и хуже передает оформление, его стоит использовать только если файл нужно открыть в очень старой версии Excel.
Формат HTML сохраняет внешний вид, но при открытии такого файла в Excel часто ломаются типы данных: числа становятся текстом, даты — строками. PDF вообще не предназначен для редактирования, это «отпечаток» документа. Если цель — рабочий файл Excel с сохраненным форматом текста, выбирайте именно XLSX.
Сравнение вариантов сохранения
Лучший перенос шрифтов, границ, объединений и форматов чисел. Рекомендуемый вариант.
Подходит только для старых версий Excel, есть ограничения на объем и оформление.
Сохраняет вид, но ломает типы данных: числа и даты могут стать текстом.
Фиксирует внешний вид для печати, но не редактируется в Excel.
Переносит значения, но часто теряет объединения, ширину колонок и форматы.
Как сохранить табличный документ через интерфейс без потери форматирования
Самый простой сценарий — сохранение уже сформированного отчета или печатной формы. Откройте табличный документ, выберите «Файл → Сохранить как» (в некоторых конфигурациях — кнопка с дискетой или пункт «Сохранить копию»), укажите тип файла «Лист Excel (*.xlsx)» и папку для сохранения.
Перед сохранением проверьте, как выглядит документ на экране: все, что видно в табличном документе 1С, в подавляющем большинстве случаев переносится в Excel один в один. Если на экране текст обрезан из-за узкой колонки, в Excel он тоже окажется обрезанным визуально, хотя значение в ячейке сохранится полностью.
После сохранения откройте файл в Excel и проверьте ключевые элементы: переносы строк внутри ячеек, объединенные шапки, числовые форматы (разделители тысяч, количество знаков после запятой), даты. Если что-то отображается иначе — проблема обычно в исходном макете, а не в механизме сохранения.
- 1Сформируйте отчет или откройте печатную форму в 1С
- 2Проверьте отображение: переносы строк, объединения, ширину колонок
- 3Выберите «Файл → Сохранить как» и тип «Лист Excel (*.xlsx)»
- 4Укажите имя и папку, сохраните файл
- 5Откройте файл в Excel и сверьте форматирование с экранным видом в 1С
Почему форматирование теряется: типичные причины
Наиболее частая причина — сохранение не через «Сохранить как», а через выделение области и копирование в Excel. Буфер обмена переносит значения и частично оформление, но теряет объединенные ячейки, точную ширину колонок, а иногда и переносы строк.
Вторая причина — «текстовое» форматирование в макете. Если разработчик сформировал видимое оформление с помощью пробелов, символов подчеркивания или вставил несколько строк текста в одну ячейку без включенного свойства переноса, Excel интерпретирует это по-своему. Например, длинный текст без переноса по словам вылезет за границы ячейки или обрежется.
Третья группа причин — типы данных. Если число записано в ячейку как строка (например, собрано конкатенацией с единицами измерения), Excel получит текст, и сортировка, фильтры и формулы с такими значениями работать не будут. Аналогично даты, записанные строкой «01.03.24», Excel может распознать неверно или не распознать вовсе.
Настройка табличного документа для корректной выгрузки
Если вы дорабатываете макет или формируете табличный документ программно, форматирование нужно задавать через свойства областей и ячеек, а не через содержимое текста. Именно свойства корректно транслируются в формат XLSX.
Для многострочного текста включите у ячейки свойство «Переносить» (в коде — свойство области РазмещениеТекста с переносом). Тогда Excel получит ячейку с включенным переносом по словам, и текст отобразится так же, как в 1С. Для выравнивания используйте свойства горизонтального и вертикального положения, а не пробелы в начале строки.
Числовые значения записывайте в ячейки как числа, а вид отображения задавайте через свойство «Формат» (форматную строку). Например, форматная строка вида «ЧЦ=15; ЧДЦ=2; ЧРГ= » даст разделители разрядов и два знака после запятой, и этот формат сохранится в Excel как числовой. Даты записывайте значением типа «Дата» с форматной строкой — тогда Excel получит настоящую дату, а не текст.
ТабДок = Новый ТабличныйДокумент;
Область = ТабДок.Область("R1C1");
Область.Текст = "Длинное наименование товара с переносом";
Область.РазмещениеТекста = ТипРазмещенияТекстаТабличногоДокумента.Переносить;
Область.Шрифт = Новый Шрифт(, , Истина);
ОбластьЧисло = ТабДок.Область("R2C1");
ОбластьЧисло.Текст = "";
ОбластьЧисло.СодержитЗначение = Истина;
ОбластьЧисло.Значение = 1234567.89;
ОбластьЧисло.Формат = "ЧЦ=15; ЧДЦ=2; ЧРГ= ";
ТабДок.Записать("C:\\Выгрузка\\Отчет.xlsx", ТипФайлаТабличногоДокумента.XLSX);Программная выгрузка: метод Записать и тип файла
При программном сохранении ключевую роль играет метод Записать() табличного документа и второй параметр — тип файла. Указывайте ТипФайлаТабличногоДокумента.XLSX: это гарантирует, что 1С использует современный механизм экспорта с полной передачей оформления.
Если тип файла не указан, 1С определяет его по расширению в имени файла. Ошибка в расширении (например, сохранение в .xls с содержимым XLSX или наоборот) может привести к тому, что Excel откроет файл с предупреждением о несоответствии формата или вообще откажется его открывать.
Для больших отчетов учитывайте, что экспорт в XLSX требует памяти пропорционально размеру документа. Если табличный документ содержит сотни тысяч строк, серверу может не хватить ресурсов — в таком случае выгрузку разбивают на части или используют CSV для данных, а форматированный шаблон накладывают отдельно.
Выгрузка через COM-объект Excel: когда это оправдано
Альтернативный подход — формировать файл напрямую через COM-объект Excel.Application. Этот способ дает полный контроль над форматированием: можно задавать любые свойства ячеек, автофильтры, закрепление областей, условное форматирование, недоступные при стандартной записи табличного документа.
Однако у метода есть серьезные ограничения. COM-автоматизация требует установленного Excel на компьютере, где выполняется код, поэтому на сервере 1С без установленного Office этот способ не работает. Кроме того, COM-выгрузка заметно медленнее записи табличного документа, особенно на больших объемах.
Использовать COM-объект разумно, когда нужны возможности Excel, которых нет в табличном документе 1С, и выгрузка выполняется на клиентском компьютере с установленным Office. Для типовой задачи «сохранить отчет с форматированием» штатного метода Записать() достаточно.
Как проверить результат и исправить частые проблемы
После сохранения откройте файл в Excel и пройдите по контрольным точкам: шапка с объединенными ячейками, многострочные текстовые поля, колонки с суммами и датами. Проверьте, что суммы участвуют в вычислениях — например, выделите колонку и посмотрите сумму в строке состояния Excel. Если сумма не считается, значения выгружены как текст.
Если числа стали текстом, источник проблемы — в макете: значение записывалось строкой. Временное решение в Excel — преобразование «текст в число», но правильное исправление делается в 1С: запись значения с типом «Число» и форматной строкой вместо формирования строки.
Если пропали переносы строк внутри ячейки, проверьте свойство «Переносить» у соответствующей области макета. Если обрезаны длинные тексты — увеличьте высоту строки или включите автоподбор высоты. Эти настройки задаются в макете 1С и корректно переносятся в XLSX.
Как проверить результат выгрузки
Выделение колонки показывает сумму в строке состояния Excel
Сумма не считается, слева от значений зеленый треугольник — это текст
Даты выравнены вправо и сортируются по возрастанию корректно
Даты прижаты влево и сортируются как строки
Текст переносится внутри ячейки, высота строк подстроена
Текст обрезан или налезает на соседние ячейки
Заголовки объединены как в печатной форме 1С
Заголовки разбиты на отдельные ячейки
Часто задаваемые вопросы
Почему при копировании из 1С в Excel теряется форматирование?
Буфер обмена передает ограниченный набор данных: значения и частично оформление. Объединенные ячейки, точная ширина колонок, переносы и форматы чисел через буфер часто теряются. Для сохранения форматирования используйте «Файл → Сохранить как» с типом «Лист Excel (*.xlsx)» — этот механизм переносит оформление полностью.
Числа выгрузились в Excel как текст. Что делать?
Причина в том, что в табличный документ значение записано строкой, а не числом. В макете или коде нужно записывать значение с типом «Число» (через СодержитЗначение и Значение), а отображение задавать форматной строкой. В уже выгруженном файле можно преобразовать текст в число средствами Excel, но при следующей выгрузке проблема повторится, пока не исправлен макет.
Как сохранить переносы строк внутри ячейки при выгрузке?
Включите у области табличного документа свойство переноса текста: в макете — флажок «Переносить», в коде — РазмещениеТекста со значением «Переносить». Символы перевода строки внутри текста (Символы.ПС) при этом сохраняются. Без включенного переноса Excel отобразит текст в одну строку с обрезкой.
Какой формат выбрать: XLSX или XLS?
Выбирайте XLSX: он без ограничений старого формата передает оформление, поддерживает больше строк и корректно открывается во всех актуальных версиях Excel. Формат XLS (Excel 95/97) оправдан только при необходимости открыть файл в очень старой версии Office.
Можно ли выгрузить из 1С сразу с автофильтром и закрепленной шапкой?
Штатная запись табличного документа в XLSX переносит фиксацию строк и колонок, если она задана в табличном документе (свойство фиксации). Автофильтр и условное форматирование стандартный экспорт не создает — для этого нужна доработка через COM-объект Excel или ручная настройка в уже сохраненном файле.
Файл большой, и выгрузка завершается ошибкой. В чем причина?
Экспорт в XLSX требует памяти пропорционально размеру табличного документа. При очень больших отчетах серверу может не хватить ресурсов. Решения: ограничить объем отчета отбором, разбить выгрузку на части, либо выгружать данные в CSV без оформления, а форматированный шаблон применять отдельно.
Что важно запомнить
Формат текста при выгрузке из 1С в Excel сохраняется, если использовать «Сохранить как» с типом XLSX или метод Записать() с типом XLSX, а форматирование в макете задавать через свойства ячеек, а не через текст. Числа и даты записывайте значениями соответствующего типа с форматными строками. Копирование через буфер обмена и устаревший формат XLS — главные источники потери оформления.