Excel: создание в формате xlsx без COM технологии

19.09.18

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

По работе приходится часто выгружать данные в Excel формате. При большом количестве строк и формул этот процесс достаточно длительный. Решил написать для своих целей небольшую библиотечку для выгрузки данных. Используется технология open-xml. Никаких библиотек не надо, пишу напрямую в xml файлики. На данном этапе сделано форматирование, формулы.

С чего я начал.

Прочитал книгу Воутер Ван Вугт "OpenXML Кратко и доступно"

Переименовал xlsx  в zip и распаковал архив в папку.

Получил 3 папки и  файл [Content_Types].xml.

Разработку вел снизу-вверх. Сперва насоздавал файлы необходимые для Excel.  Затем сделал структуру с данными на основании которых генерится документ.

Струкутуру с данными назвал  ДанныеКниги

Процедура создания файла такова. Создаю все необходимые файлы и папки.


Функция Записать_Content_Types_xml(путь)
	
	хмл = Новый ЗаписьXML;
	хмл.ОткрытьФайл(Путь);
	хмл.ЗаписатьОбъявлениеXML();
	
	хмл.ЗаписатьНачалоЭлемента("Types");
	хмл.ЗаписатьАтрибут("xmlns", "http://schemas.openxmlformats.org/package/2006/content-types");
	
	хмл.ЗаписатьНачалоЭлемента("Default");
	хмл.ЗаписатьАтрибут("Extension", "rels");
	хмл.ЗаписатьАтрибут("ContentType", "application/vnd.openxmlformats-package.relationships+xml");
	хмл.ЗаписатьКонецЭлемента();
	
	хмл.ЗаписатьНачалоЭлемента("Default");
	хмл.ЗаписатьАтрибут("Extension", "xml");
	хмл.ЗаписатьАтрибут("ContentType", "application/xml");
	хмл.ЗаписатьКонецЭлемента();
	
	хмл.ЗаписатьНачалоЭлемента("Override");
	хмл.ЗаписатьАтрибут("PartName", "/xl/workbook.xml");
	хмл.ЗаписатьАтрибут("ContentType", "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet.main+xml");
	хмл.ЗаписатьКонецЭлемента();
	к = 1;
	Для каждого стр из ДанныеКниги.Листы цикл
		хмл.ЗаписатьНачалоЭлемента("Override");
		хмл.ЗаписатьАтрибут("PartName", "/xl/worksheets/sheet" + строка(к) + ".xml");
		хмл.ЗаписатьАтрибут("ContentType", "application/vnd.openxmlformats-officedocument.spreadsheetml.worksheet+xml");
		хмл.ЗаписатьКонецЭлемента();
		к=к+1;
	КонецЦикла;
		к = 1;
	Для каждого стр из ДанныеКниги.Таблицы цикл
		хмл.ЗаписатьНачалоЭлемента("Override");
		хмл.ЗаписатьАтрибут("PartName", "/xl/tables/table" + строка(к) + ".xml");
		хмл.ЗаписатьАтрибут("ContentType", "application/vnd.openxmlformats-officedocument.spreadsheetml.table+xml");
		хмл.ЗаписатьКонецЭлемента();
		к=к+1;
	КонецЦикла;	
	
	хмл.ЗаписатьНачалоЭлемента("Override");
	хмл.ЗаписатьАтрибут("PartName", "/xl/theme/theme1.xml");
	хмл.ЗаписатьАтрибут("ContentType", "application/vnd.openxmlformats-officedocument.theme+xml");
	хмл.ЗаписатьКонецЭлемента();
	
	хмл.ЗаписатьНачалоЭлемента("Override");
	хмл.ЗаписатьАтрибут("PartName", "/xl/styles.xml");
	хмл.ЗаписатьАтрибут("ContentType", "application/vnd.openxmlformats-officedocument.spreadsheetml.styles+xml");
	хмл.ЗаписатьКонецЭлемента();
	
	хмл.ЗаписатьНачалоЭлемента("Override");
	хмл.ЗаписатьАтрибут("PartName", "/docProps/core.xml");
	хмл.ЗаписатьАтрибут("ContentType", "application/vnd.openxmlformats-package.core-properties+xml");
	хмл.ЗаписатьКонецЭлемента();
	
	хмл.ЗаписатьНачалоЭлемента("Override");
	хмл.ЗаписатьАтрибут("PartName", "/docProps/app.xml");
	хмл.ЗаписатьАтрибут("ContentType", "application/vnd.openxmlformats-officedocument.extended-properties+xml");
	хмл.ЗаписатьКонецЭлемента();
	
	хмл.ЗаписатьНачалоЭлемента("Override");
	хмл.ЗаписатьАтрибут("PartName", "/xl/sharedStrings.xml");
	хмл.ЗаписатьАтрибут("ContentType", "application/vnd.openxmlformats-officedocument.spreadsheetml.sharedStrings+xml");
	хмл.ЗаписатьКонецЭлемента();
	
	хмл.ЗаписатьКонецЭлемента();
	
	хмл.Закрыть();
	
КонецФункции

Делал выгрузку шапка 10 строк  тч 4000 строк, 67 столбцов 20 формул в строке. форматирование(шрифты, рамки, ширина столбцов, заливка) времени заняло 135 секунд.

пример формирования шапки

// заполняем лист
&НаКлиенте
Функция СформироватьШапку(подразделение, код,датасоставления, месяц)
	// создадим  стили в нашей книги
	Заголовок11 = ДобавитьСтиль(0,	Объект.ДанныеКниги.шрифты.Индекс(Объект.ДанныеКниги.шрифты.НайтиПоЗначению("Arial_11")), 	0,	0, "vertical='center'");
	Заголовок11_рамка_центр = ДобавитьСтиль(0, 	Объект.ДанныеКниги.шрифты.Индекс(Объект.ДанныеКниги.шрифты.НайтиПоЗначению("Arial_12_b")),	0, 	Объект.ДанныеКниги.рамки.Индекс(Объект.ДанныеКниги.рамки.НайтиПоЗначению("1111")), "horizontal='center'");
	Заголовок11_рамка_дата = ДобавитьСтиль(14,	Объект.ДанныеКниги.шрифты.Индекс(Объект.ДанныеКниги.шрифты.НайтиПоЗначению("Arial_11")),	0,	Объект.ДанныеКниги.рамки.Индекс(Объект.ДанныеКниги.рамки.НайтиПоЗначению("1111")),	 "horizontal='center'");	
	Рамка_верх_низ = ДобавитьСтиль(0,	0, 	0,	Объект.ДанныеКниги.рамки.Индекс(Объект.ДанныеКниги.рамки.НайтиПоЗначению("0011")), "");  
	Рамка_верх_низ_право = ДобавитьСтиль(0,	0, 	0,	Объект.ДанныеКниги.рамки.Индекс(Объект.ДанныеКниги.рамки.НайтиПоЗначению("0111")), "");
	Рамка_верх = ДобавитьСтиль(0,	0, 	0,	Объект.ДанныеКниги.рамки.Индекс(Объект.ДанныеКниги.рамки.НайтиПоЗначению("0010")), "");
	Рамка_л = ДобавитьСтиль(0,	0, 	0,	Объект.ДанныеКниги.рамки.Индекс(Объект.ДанныеКниги.рамки.НайтиПоЗначению("1000")), "");
	ПодСтрокой  = ДобавитьСтиль(0,Объект.ДанныеКниги.шрифты.Индекс(Объект.ДанныеКниги.шрифты.НайтиПоЗначению("Arial_6")), 0,0, "horizontal='center' vertical='top'");	
	Заголовок12 = ДобавитьСтиль(0,Объект.ДанныеКниги.шрифты.Индекс(Объект.ДанныеКниги.шрифты.НайтиПоЗначению("Arial_12")),0,	0, "");	
	хмл = "";
    хмл = хмл + ДобавитьСтроку("B" ,"1", "ооо веснушка",Заголовок12);
	хмл = хмл + ДобавитьСтроку( "B" ,"2", "наименование организации",ПодСтрокой);
	хмл = хмл + ДобавитьСтроку( "B" ,"3", подразделение,Заголовок12);
	хмл = хмл + ДобавитьСтроку( "B" ,"4", "подразделение",ПодСтрокой);
	хмл = хмл + ДобавитьСтроку( "V" ,"5", "Код подразделения",Заголовок11_рамка_центр);
	хмл = хмл + ДобавитьСтроку( "W" ,"5", "",Рамка_верх_низ);
	хмл = хмл + ДобавитьСтроку( "X" ,"5", "",Рамка_верх_низ);
	хмл = хмл + ДобавитьСтроку( "Y" ,"5", "",Рамка_верх_низ);
	хмл = хмл + ДобавитьСтроку( "Z" ,"5", "",Рамка_верх_низ_право);
	хмл = хмл + ДобавитьСтроку( "AA","5", "Дата составления",Заголовок11_рамка_центр);
	хмл = хмл + ДобавитьСтроку( "AB" ,"5", "",Рамка_верх_низ);
	хмл = хмл + ДобавитьСтроку( "AC" ,"5", "",Рамка_верх_низ);
	хмл = хмл + ДобавитьСтроку( "AD" ,"5", "",Рамка_верх_низ_право);
	

	
	хмл = хмл + ДобавитьДату( "AA","7", Формат(датасоставления,"ДФ=dd.MM.yyyy"), Заголовок11_рамка_дата);
	хмл = хмл + ДобавитьСтроку( "AB" ,"7", "",Рамка_верх_низ);
	хмл = хмл + ДобавитьСтроку( "AC" ,"7", "",Рамка_верх_низ);
	хмл = хмл + ДобавитьСтроку( "AD" ,"7", "",Рамка_верх_низ_право);
	
	ДобавитьДату( "AF","7", Формат(НачалоМесяца(месяц),"ДФ=dd.MM.yyyy"), Заголовок11_рамка_дата);
	хмл = хмл + ДобавитьСтроку( "AG" ,"7", "",Рамка_верх_низ);
	хмл = хмл + ДобавитьСтроку( "AH" ,"7", "",Рамка_верх_низ);
	хмл = хмл + ДобавитьСтроку( "AI" ,"7", "",Рамка_верх_низ_право);
	
	ДобавитьДату( "AJ","7", Формат(КонецМесяца(месяц),"ДФ=dd.MM.yyyy"), Заголовок11_рамка_дата);
	хмл = хмл + ДобавитьСтроку( "AK" ,"7", "",Рамка_верх_низ);
	хмл = хмл + ДобавитьСтроку( "AL" ,"7", "",Рамка_верх_низ);
	хмл = хмл + ДобавитьСтроку( "AM" ,"7", "",Рамка_верх_низ_право);
	
	 возврат хмл;
КонецФункции

Книга хранится в структуре которая инициализируется следующим образом

Процедура ИнициализацияКниги()
	Шрифты  = Новый СписокЗначений;
	шрифты.Добавить("Arial_11","<font><sz val='11'/><name val='Arial'/><family val='2'/></font>");
	Заливки = Новый СписокЗначений;
	стр = Заливки.Добавить("fill_none","<fill><patternFill patternType='none'/></fill>");
	стр = Заливки.Добавить("fill_gray125", "<fill><patternFill patternType='gray125'/></fill>");
	Рамки   = Новый СписокЗначений;
	стр = рамки.Добавить("0000","<border><left/><right/><top/><bottom/><diagonal/></border>");
	Стили   = Новый СписокЗначений;
	Листы   = Новый СписокЗначений;
	лист = новый Структура;
	лист.Вставить("Имя", "Лист_1");
	лист.Вставить("ДанныеЛиста","");
	лист.Вставить("Колонки", Новый СписокЗначений);
	лист.Вставить("ОбъединенныеЯчейки", Новый массив);

	Таблица = Новый Структура;
	таблица.Вставить("Имя", "");
	таблица.Вставить("Лист", 0);
	таблица.Вставить("Колонки", новый списокЗначений);
	таблица.Вставить("диапазон", "");

	Листы.Добавить(лист); 
	
	ОбъединениеЯчеек   = Новый массив;
	ПорядокВычислений   = Новый СписокЗначений;
	СписокСтрок   = Новый Массив;
	
	ДанныеКниги= Новый Структура;
	ДанныеКниги.Вставить("Рамки"  , Рамки);
	ДанныеКниги.Вставить("Шрифты" , Шрифты);
	ДанныеКниги.Вставить("Заливки", Заливки);
	ДанныеКниги.Вставить("Листы"  , Листы);
	ДанныеКниги.Вставить("Стили"  , Стили);
	ДанныеКниги.Вставить("ОбъединениеЯчеек"  , ОбъединениеЯчеек);
	ДанныеКниги.Вставить("ПорядокВычислений"  , ПорядокВычислений);
	ДанныеКниги.Вставить("СписокСтрок"  , СписокСтрок);
	ДанныеКниги.Вставить("Таблицы"  , новый СписокЗначений);
	

Конецпроцедуры

Стили (рамки, шрифты, заливки) хранятся для всей книги в файле styles.xml.

Все строковые значения ячеек книги(дата тоже) хранятся в списке "СписокСтрок"  который сохраняется в файл sharedStrings.xml.

листы книги каждый в своем файле sheet1.xml. (ширина колонок, объединенные ячейки, данные листа).

Пример формирования [Content_Types].xml

Функция Записать_Content_Types_xml(путь)
	
	хмл = Новый ЗаписьXML;
	хмл.ОткрытьФайл(Путь);
	хмл.ЗаписатьОбъявлениеXML();
	
	хмл.ЗаписатьНачалоЭлемента("Types");
	хмл.ЗаписатьАтрибут("xmlns", "http://schemas.openxmlformats.org/package/2006/content-types");
	
	хмл.ЗаписатьНачалоЭлемента("Default");
	хмл.ЗаписатьАтрибут("Extension", "rels");
	хмл.ЗаписатьАтрибут("ContentType", "application/vnd.openxmlformats-package.relationships+xml");
	хмл.ЗаписатьКонецЭлемента();
	
	хмл.ЗаписатьНачалоЭлемента("Default");
	хмл.ЗаписатьАтрибут("Extension", "xml");
	хмл.ЗаписатьАтрибут("ContentType", "application/xml");
	хмл.ЗаписатьКонецЭлемента();
	
	хмл.ЗаписатьНачалоЭлемента("Override");
	хмл.ЗаписатьАтрибут("PartName", "/xl/workbook.xml");
	хмл.ЗаписатьАтрибут("ContentType", "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet.main+xml");
	хмл.ЗаписатьКонецЭлемента();
	к = 1;
	Для каждого стр из ДанныеКниги.Листы цикл
		хмл.ЗаписатьНачалоЭлемента("Override");
		хмл.ЗаписатьАтрибут("PartName", "/xl/worksheets/sheet" + строка(к) + ".xml");
		хмл.ЗаписатьАтрибут("ContentType", "application/vnd.openxmlformats-officedocument.spreadsheetml.worksheet+xml");
		хмл.ЗаписатьКонецЭлемента();
		к=к+1;
	КонецЦикла;
	хмл.ЗаписатьНачалоЭлемента("Override");
	хмл.ЗаписатьАтрибут("PartName", "/xl/theme/theme1.xml");
	хмл.ЗаписатьАтрибут("ContentType", "application/vnd.openxmlformats-officedocument.theme+xml");
	хмл.ЗаписатьКонецЭлемента();
	
	хмл.ЗаписатьНачалоЭлемента("Override");
	хмл.ЗаписатьАтрибут("PartName", "/xl/styles.xml");
	хмл.ЗаписатьАтрибут("ContentType", "application/vnd.openxmlformats-officedocument.spreadsheetml.styles+xml");
	хмл.ЗаписатьКонецЭлемента();
	
	хмл.ЗаписатьНачалоЭлемента("Override");
	хмл.ЗаписатьАтрибут("PartName", "/docProps/core.xml");
	хмл.ЗаписатьАтрибут("ContentType", "application/vnd.openxmlformats-package.core-properties+xml");
	хмл.ЗаписатьКонецЭлемента();
	
	хмл.ЗаписатьНачалоЭлемента("Override");
	хмл.ЗаписатьАтрибут("PartName", "/docProps/app.xml");
	хмл.ЗаписатьАтрибут("ContentType", "application/vnd.openxmlformats-officedocument.extended-properties+xml");
	хмл.ЗаписатьКонецЭлемента();
	
	хмл.ЗаписатьНачалоЭлемента("Override");
	хмл.ЗаписатьАтрибут("PartName", "/xl/sharedStrings.xml");
	хмл.ЗаписатьАтрибут("ContentType", "application/vnd.openxmlformats-officedocument.spreadsheetml.sharedStrings+xml");
	хмл.ЗаписатьКонецЭлемента();
	
	хмл.ЗаписатьКонецЭлемента();
	
	хмл.Закрыть();
	
КонецФункции

Добавил таблицы. Для моих целей завершил обработку.

демо версия находится по адресу //infostart.ru/public/905578/

Подробная документация https://www.ecma-international.org/publications/standards/Ecma-376.htm

 

 

обработка Excel отчет

См. также

Загрузка номенклатуры из Excel в УТ11, КА 2, ERP 2, Розница 2. Дополнительные реквизиты и сведения, характеристики, картинки, цены, остатки

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

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

10560 руб.

29.10.2014    209812    620    524    

438

Загрузка номенклатуры c картинками (несколько потоков одновременно) и сопутствующими данными в базу и любые документы из yml, xls, xlsx, xlsm, ods, ots, csv для УТ 10.3, УТ 11 (все), БП 3, КА 2, ERP 2, УНФ 1.6/3.0, Розница 2

Загрузка и выгрузка в 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 Платные (руб)

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

13200 руб.

20.11.2015    150379    365    375    

499

Маркетплейсный загрузчик для 12-ти маркетплейсов в "БП 3", "УТ 11", "КА 2", ERP, УНФ

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

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

1800 руб.

12.08.2021    31793    234    63    

117

Распознавание и загрузка сканов в 1С "одним нажатием": УПД, ТОРГ-12, накладные, счета, номенклатура, заказы и т.д.

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

Универсальная программа для распознавания ЛЮБЫХ СКАНОВ ИЛИ ФОТО ТОВАРНЫХ ДОКУМЕНТОВ в 1С. Не требует указания параметров и предварительной настройки. Просто выбираете файл (PDF, JPG, DOC, XLS, HTML и т.д.) выбираете документ 1С и нажимаете кнопку "Распознать и загрузить".

5400 руб.

04.06.2019    101126    296    173    

312

Загрузка данных отчета о реализации товаров из Excel файла СберМегаМаркет

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

Загрузка данных отчета о реализации товаров из сервиса СберМегаМаркет для конфигурации: Бухгалтерия предприятия, редакция 3.0; Управление торговлей, редакция 11 и Управление нашей фирмой, редакция 3.0 в документ "Отчет комиссионера (агента) о продажах".

3600 руб.

07.06.2022    14947    78    0    

59

Загрузка документов и номенклатуры из Excel в 1С "одним нажатием": УПД, ТОРГ-12, отчеты маркетплейсов, заказы, счета, прайсы

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

Универсальная обработка для загрузки документов из Excel в 1С. Не требует указания параметров (номера колонок, номер первой строки таблицы и т.д.) и предварительной настройки. Просто выбираете файл Excel, документ 1С и нажимаете кнопку "Загрузить". Обработка сама находит таблицу в файле Excel, необходимые для загрузки данные в ней (номенклатура, количество, НДС, цена, сумма) и загружает ее в 1С. Вместе с номенклатурой может найти контрагента, номер и дату документа, штрих-коды, серии ГТД, страну и т.д. Распознает документы ЛЮБОЙ ФОРМЫ (УПД, ТОРГ-12, заказ, отчет комиссионера и т.д.). Не требует MS Office. Для поиска таблиц используются методы эвристического поиска. Загружает только то, что нужно, т.е. пропускает повторы шапки таблицы, заголовки, промежуточные итоги, подписи и т.д. Содержит модуль работы с электронной почтой и api-загрузчик отчетов о продажах маркетплейсов.

5000 руб.

09.11.2016    214602    921    886    

938
Комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. stanislav1esnik 11.09.18 09:44 Сейчас в теме
Спасибо за примеры кода и наводку на книгу! )
Тема чтения/изменения файлов Excel из составных xml-ек уже поднималась, но думаю актуальности не потеряла.
2. user1045404 166 11.09.18 10:13 Сейчас в теме
Спасибо за комментарий. Смотрю тема заинтересовала. Подготовлю демонстрашку. Подчищу код и выложу.
3. tsukanov 11.09.18 11:07 Сейчас в теме
Не используйте конкатенацию. Лучше массив + СтрСоединить().
При конкатенации на каждый "+" скорее всего выделяется новая память под всю! строку. Это медленно и вообще бессмысленная нагрузка на процессор и память.

Было бы здорово, если бы вы оформили это в виде обработки-библиотеки. Давно напрашивается )
rabid_otter; mivari; pbabincev; echo77; kraynev-navi; +5 Ответить
4. user1045404 166 11.09.18 11:38 Сейчас в теме
5. premierex 204 12.09.18 08:48 Сейчас в теме
(0) А зачем в процедуре ИнициализацияКниги() фрагмент кода ДанныеКниги = ДанныеКниги;?
7. user1045404 166 12.09.18 11:24 Сейчас в теме
(5)делал для уф, потом переделывал для обычных. удалил слово "объект. "
6. kasper076 100 12.09.18 09:29 Сейчас в теме
Было бы здорово пакеты XDTO получить для каждой xml-ки.
8. user1045404 166 12.09.18 11:38 Сейчас в теме
(6)надеюсь в понедельник обработку выложу (осталось чистку кода и демонстрашку доделать + Исправляю замечание Александра Цуканова).
9. krollzlat 17.10.18 11:20 Сейчас в теме
Написано что процесс достаточно длительный ...И насколько быстрее отрабатывает этот метод на одном и том же объеме данных?
10. Gureev 17.10.18 15:55 Сейчас в теме
Предлагаю оформить и выложить на гитхаб, силами сообщества из этого быстро вырастет библиотека.
JenniferOnLine; gradi; +2 Ответить
11. triviumfan 91 17.10.18 20:13 Сейчас в теме
Я один не уловил сути создания таким методом заветного xlsx? Не понимаю, зачем твой разврат. Скоростью тут и не пахнет совсем.
14. user1045404 166 18.10.18 12:55 Сейчас в теме
(11) скоростью пахнет и еще как. когда попробуешь через СОМ формулы устанавливать и рамочки , скорость ощутима.
12. acanta 17.10.18 20:38 Сейчас в теме
Интересно было бы загрузить в лист екселя/опенофиса вместе с формулами и сохранить в 1с, обновить какие то данные в базе, отредактировать формулы, увидеть результаты их расчета и сохранить в ексель/опенофис с формулами. ИМХО, методика очень даже подходит, если закинуть все это в общий модуль и визуализировать. Но вот в чем это можно сохранить?
13. Кадош 17.10.18 23:53 Сейчас в теме
(12) вопрос не в скорости, а в работе с экселем без COM и ADO
15. Serj1C 483 22.10.18 11:59 Сейчас в теме
на дворе 2к18.
платформа из коробки умеет сохранять табличный документ в формат эксель без костылей.
	ТабличныйДокумент.Записать(ИмяФайлаXLSX, ТипФайлаТабличногоДокумента.XLSX);

даже в контексте сервера.
даже уже с поддержкой листов
16. azhilichev 213 23.10.18 17:52 Сейчас в теме
(15) Как вы при такой выгрузке добавите табличный документ формулы, которые будут работать в Excel?
ubnkfl; user797130; +2 Ответить
17. Serg_Tangatarov 107 23.07.21 13:22 Сейчас в теме
(16) Мы в табуле такое реализовали, выгружает все с настроенными формулами в виде книге на 4 листах
https://infostart.ru/public/1011342/
19. AlexO 135 25.01.22 21:45 Сейчас в теме
(16) Никак, там даже книга Excel не создается - при открытии "файла Excel" нет листов. Какие такие формулы, форматирование....
Так, расширение на "XLS" меняют, а внутри - что-то среднее между форматом XML и TXT.
18. AlexO 135 25.01.22 21:43 Сейчас в теме
(15) ничего подобного.
"на дворе 2005-й год... на дворе 2K10..." - какая разница, что на дворе, если речь про 1С?
По 'ТабДок.Записать()' охраняет только "лист" (сиречь - таблицу данных), которая в Excel открывается без "руля и ветрил" (т.е. не как книга Excel, а без листов и всего прочего).
Так что никакого "Excel" тут и нет, не то что "Excel из коробки".
Опять профанация и введение в заблуждение.
даже уже с поддержкой листов

С какого-такого перепугу? 2022 год, платформа 8.3.19 - все также, "голая" таблица выгрузки из ТабДок. И ничего другого не предвидится и не будет.
Оставьте свое сообщение