Заполнение формул в файлах Excel (кроссплатформенное решение)

30.10.25

Интеграция - Загрузка и выгрузка в Excel

Описанный ниже подход позволяет в три шага заполнять формулы в Excel файлы, вне зависимости от ОС сервера (MS Windows Server или Linux). Подход подразумевает отказ от работы с COM-объектом в пользу работы через "объектную модель документа" (DOM).

Вдохновением послужила статья Выгрузка данных в Excel с добавлением формул (нюансы формирования формул), а также отсутствие в интернете описанного подхода по работе с формулами.

Основная идея в том, что файл Excel по сути является zip-архивом с файлами внутри. Файлы, в свою очередь, можно редактировать с помощью объекта платформы ДокументDOM.

В данном примере приводится заполнение формул со стилем ссылок "по умолчанию", так называемый ссылочный стиль A1. Например: "=A1+B2".

Важно: Предварительно, сам файл должен быть корректно сформирован (корректный формат данных в ячейках).

Есть куча статей, в которых описано, как это сделать для числовых значений (настройка в макете).

 

Итак, алгоритм действий следующий:

1. Распаковка файла Excel как zip-архива

ВременныйКаталог = КаталогВременныхФайлов() + "\excel_temp\";
	
СоздатьКаталог(ВременныйКаталог);
	
ИзвлечьАрхив(ПутьДоФайла, ВременныйКаталог);

2. Работа с XML файлом листа документа Excel и заполнение формул

ПутьДоXMLФайлаЛист1 = ВременныйКаталог + "xl\worksheets\sheet1.xml";

// Чтение распакованного xml-файла листа 1 в ДокументDOM
ДокументDOM = ПолучитьDOMДокументИзXMLФайла(ПутьДоXMLФайлаЛист1);
	
ВсеЯчейки = ДокументDOM.ПолучитьЭлементыПоИмени("c");
ВсеСтроки = ДокументDOM.ПолучитьЭлементыПоИмени("row");
ВсегоСтрок = ВсеСтроки.Количество();

// Обход ячеек и определение формул по произвольному алгоритму
Для Каждого Ячейка Из ВсеЯчейки Цикл
	Формула = Неопределено;
		
	ИмяЯчейки = Ячейка.ПолучитьАтрибут("r");
	Если ИмяЯчейки = Неопределено Тогда
		Продолжить;
	КонецЕсли;
		
	ИмяСтолбца = Сред(ИмяЯчейки, 1, 1);
	ИмяСтроки = Сред(ИмяЯчейки, 2);
		
	НомерСтроки = Число(ИмяСтроки);
	
	// Сборка формулы по условиям для ячейки в формате "=A1+B2"
	// Тут необходимо прописать логику по определению формулы
	Формула = "=A1+B2";
		
	Если Формула = Неопределено Тогда
		Продолжить;
	КонецЕсли;
		
	Пока Ячейка.ЕстьДочерниеУзлы() Цикл
		Ячейка.УдалитьДочерний(Ячейка.ПервыйДочерний);
	КонецЦикла;
		
	// Заполнение формулы
	ЭлФормула = ДокументDOM.СоздатьЭлемент("f");
	ЭлФормула.ТекстовоеСодержимое = Формула;
	
	Ячейка.ДобавитьДочерний(ЭлФормула);
	
КонецЦикла;
	
// Запись модифицированного объекта ДокументDOM в xml-файл листа 1
СохранитьDOMДокументКАКXMLФайл(ДокументDOM, ПутьДоXMLФайлаЛист1);

3. Запаковка измененных файлов обратно в архив (Excel-файл) и удаление временных файлов

УдалитьФайлы(ПутьДоФайла);
	
СобратьАрхив(ВременныйКаталог, ПутьДоФайла);
	
УдалитьФайлы(ВременныйКаталог);

Для удобства, все вынесено в отдельный общий модуль, привожу его листинг:

 
 Листинг общего модуля

Вступайте в нашу телеграмм-группу Инфостарт

Excel Формулы Экспорт Linux Windows кроссплатформенность ZIP XML ДокументDOM

См. также

Загрузка и выгрузка в Excel Маркетплейсы Программист Бухгалтер Пользователь 1С v8.3 Бухгалтерский учет 1С:Розница 2 1С:Управление нашей фирмой 1.6 1С:ERP Управление предприятием 2 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х Россия Бухгалтерский учет Управленческий учет Платные (руб)

Реальный помощник, с помощью которого Вы преобразуете необходимые документы для Wildberries, OZON, ЯндексМаркет, Мегамаркет, Aliexpress, Детский мир, Магнит Маркет (быв.МагнитЭкспресс), Лемана про, ЭНФАНТА (Акушерство), ЛаМода, Летуаль, Твой дом, Золотое Яблоко в документы "Отчет комиссионера (агента) о продажах" и другие. Работает в 1С:БП 3.0, 1С:БП 3.0 КОРП, 1С:УТ 11, 1С:УНФ, 1С:ERP Управление предприятием.

5400 руб.

12.08.2021    42455    492    71    

201

SALE! 10%

Загрузка и выгрузка в Excel Оптовая торговля Бухгалтер Пользователь 1С v8.3 Управляемые формы 1C v8.2 1С:Бухгалтерия 2.0 1С:Бухгалтерия 3.0 1С:Управление производственным предприятием 1С:ERP Управление предприятием 2 1С:Управление холдингом 1С:Комплексная автоматизация 1.х 1С:Комплексная автоматизация 2.х 1С:Управление нашей фирмой 1.6 1С:Управление нашей фирмой 3.0 1С:Управление торговлей 10 1С:Управление торговлей 11 1С:Розница 2 1С:Розница 3.0 Бухгалтерский учет Управленческий учет Платные (руб)

Универсальная обработка для загрузки документов из Excel в 1С. Забудьте о ручном вводе: загружайте документы из Excel в 1С за секунды! Не требует указания параметров (номера колонок, номер первой строки таблицы и т.д.) и предварительной настройки. Просто выбираете файл эксель, документ 1С и нажимаете кнопку "Загрузить"

8000 руб.

09.11.2016    260338    1155    940    

1082

Загрузка и выгрузка в Excel Розничная торговля Логистика, склад и ТМЦ Ценообразование, анализ цен Прайсы Системный администратор Программист 1С v8.3 1С:Комплексная автоматизация 1.х 1С:Розница 2 1С:ERP Управление предприятием 2 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х Управленческий учет Платные (руб)

Загрузка номенклатуры из файлов Excel (xls, xlsx, ods, csv, mxl) в УТ11, КА 2, ERP 2, Розница 2. Задействованы все возможности конфигурации - заполнение реквизитов номенклатуры, дополнительных реквизитов и сведений, характеристики, доп.реквизиты и сведения характеристик. Дополнительные обработки для расширения возможностей.

11100 руб.

29.10.2014    226002    709    528    

480

Загрузка и выгрузка в Excel Логистика, склад и ТМЦ Ценообразование, анализ цен Файловый обмен (TXT, XML, DBF), FTP Бухгалтер Пользователь 1С v8.3 1С:Бухгалтерия 2.0 1С:Управление торговлей 10 1С:Розница 2 1С:Управление нашей фирмой 1.6 1С:ERP Управление предприятием 2 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х 1С:Управление нашей фирмой 3.0 1С:Розница 3.0 Платные (руб)

Эволюция не стоит на месте - новая удобная версия функциональной обработки для Вашего бизнеса! Что же Вы получаете? Удобный и интуитивно понятный интерфейс с 3-мя этапами работы. 2 режима - автоматический и ручной. Чтение XLSX, XLSM, CSV, XML/YML форматов без офиса, на любом сервере! Визуальное связывание колонок файла и реквизитов простым перетаскиванием колонок. Создание или обновление номенклатуры с иерархией, характеристик, доп. реквизитов, упаковок, загрузка практически неограниченного количества картинок на одну номенклатуру (с возможностью загрузки в несколько потоков одновременно), с хранением в томах или в базе. Загрузка номенклатуры поставщиков или поиск по их данным номенклатуры. Загрузка доп. реквизитов в характеристики. Загрузка штрихкодов с генерацией новых. Создание элементов справочников и ПВХ "на лету" для выбранных реквизитов. (Обновление от 24.09.2025, версия 9.12 - 10.4)

19200 руб.

20.11.2015    168030    418    389    

539

Загрузка и выгрузка в Excel Маркетплейсы Программист Бухгалтер Пользователь 1С v8.3 Бухгалтерский учет Оперативный учет 1С:Управление торговлей 10 1С:ERP Управление предприятием 2 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х 1С:Управление нашей фирмой 3.0 1С:Розница 3.0 Бухгалтерский учет Платные (руб)

Обработки загрузки данных о продажах WildBerries предназначены для следующих конфигураций: Бухгалтерия предприятия, редакция 3.0; Управление нашей фирмой, редакция 3.0; Розница, редакция 3.0; Управление торговлей, редакция 11; Управление торговлей, редакция 10.3

6000 руб.

11.12.2019    62382    1062    3    

281

Загрузка и выгрузка в Excel 1С v8.3 1C:Бухгалтерия Платные (руб)

Загрузка в 1С от А до Я - настройка полной автоматической загрузки в 1С прайсов-листов поставщиков Загрузка номенклатуры, характеристик, свойств, картинок, штрихкодов, групп, видов номенклатуры. Поиск, сравнение, подбор соответствий номенклатуры поставщиков.  Загрузка прайсов в форматах Excel, csv, xml, yml, ods. Загрузка многостраничных прайсов. Умеет загружать прайсы из почты, по ссылкам, по Api. Фильтровать, отбирать, менять строки, колонки, применять формулы для цен. Самая быстрая загрузка в 1С - 100 000 товаров менее 1 минуты. Содержит отчеты - по номенклатуре, изменение цен, сравнение прайсов, товары к закупке.  Расширение имеет комплектацию из большого количества разработок!

42000 руб.

25.07.2010    49932    153    105    

219
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. Трактор 1272 30.10.25 10:55 Сейчас в теме
Добавил в избранное. Благодарю за публикацию. Зело красиво.
Abysswalker; +1 Ответить
Для отправки сообщения требуется регистрация/авторизация