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

Публикация № 900022

Разработка - Обмен данными 1С - Загрузка и выгрузка в Excel

обработка 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

 

 

Специальные предложения

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

Было бы здорово, если бы вы оформили это в виде обработки-библиотеки. Давно напрашивается )
oleganatolievich; mivari; pbabincev; echo77; kraynev-navi; +5 Ответить
4. user1045404 144 11.09.18 11:38 Сейчас в теме
5. premierex 12.09.18 08:48 Сейчас в теме
(0) А зачем в процедуре ИнициализацияКниги() фрагмент кода ДанныеКниги = ДанныеКниги;?
7. user1045404 144 12.09.18 11:24 Сейчас в теме
(5)делал для уф, потом переделывал для обычных. удалил слово "объект. "
6. kasper076 73 12.09.18 09:29 Сейчас в теме
Было бы здорово пакеты XDTO получить для каждой xml-ки.
8. user1045404 144 12.09.18 11:38 Сейчас в теме
(6)надеюсь в понедельник обработку выложу (осталось чистку кода и демонстрашку доделать + Исправляю замечание Александра Цуканова).
9. krollzlat 17.10.18 11:20 Сейчас в теме
Написано что процесс достаточно длительный ...И насколько быстрее отрабатывает этот метод на одном и том же объеме данных?
10. Gureev 17.10.18 15:55 Сейчас в теме
Предлагаю оформить и выложить на гитхаб, силами сообщества из этого быстро вырастет библиотека.
11. triviumfan 24 17.10.18 20:13 Сейчас в теме
Я один не уловил сути создания таким методом заветного xlsx? Не понимаю, зачем твой разврат. Скоростью тут и не пахнет совсем.
14. user1045404 144 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 479 22.10.18 11:59 Сейчас в теме
на дворе 2к18.
платформа из коробки умеет сохранять табличный документ в формат эксель без костылей.
	ТабличныйДокумент.Записать(ИмяФайлаXLSX, ТипФайлаТабличногоДокумента.XLSX);

даже в контексте сервера.
даже уже с поддержкой листов
16. azhilichev 23.10.18 17:52 Сейчас в теме
(15) Как вы при такой выгрузке добавите табличный документ формулы, которые будут работать в Excel?
user797130; +1 Ответить
Оставьте свое сообщение

См. также

Копирование числовых ячеек из 1С в Excel Промо

Загрузка и выгрузка в Excel Администрирование данных 1С v8 1cv8.cf Бесплатно (free)

Решение проблемы, когда значения скопированных ячеек из табличных документов 1С в Excel воспринимаются последним как текст, т.е. без дополнительного форматирования значений невозможно применить арифметические операции. Поводом для публикации послужило понимание того, что целое предприятие с более сотней активных пользователей уже на протяжении года мучилось с такой, казалось бы на первый взгляд, тривиальной проблемой. Варианты решения, предложенные специалистами helpdesk, обслуживающими данное предприятие, а так же многочисленные обсуждения на форумах, только подтвердили убеждение в необходимости описания способа, который позволил мне качественно и быстро справиться с ситуацией.

15.01.2019    25167    itriot11    26    

Удаление из файла эксель ненужных страниц средствами 1С без COM и через COM

Загрузка и выгрузка в Excel v8 1cv8.cf Бесплатно (free)

Как средствами 1С из файла эксель удалить ненужные листы без COM и с ним. Я разрабатывал на платформе 1С:Предприятие 8.3 (8.3.14.1694)

28.01.2020    2697    pavel_pss    12    

Обертка функций Excel на русском. Ускорение процесса разработки.

Загрузка и выгрузка в Excel Универсальные функции v8 Бесплатно (free)

Устали переключаться с русского на английский и обратно при работе с таблицами Excel из 1С? Сборка наиболее необходимых функций и методов работы с Excel, обернутых в функции 1С на русском языке.

24.10.2019    7264    DmitryKotov    6    

Выгрузка из 1С номенклатуры со штрихкодами без программирования

Загрузка и выгрузка в Excel Внешние источники данных v8 УТ11 Россия Бесплатно (free)

Я так и не смог найти простой инструкции или обработки, чтобы выгрузить из 1С: Управление торговлей 11 номенклатуру вместе со штрихкодами, поэтому решил написать собственную инструкцию.

28.08.2019    12262    user1114182    4    

Excel vs 1С: битва с неожиданным исходом Промо

Анализ учета Универсальные обработки Загрузка и выгрузка в Excel Финансовые Управленческие v8 1cv8.cf Россия Бесплатно (free)

Что лучше 1С или Excel? Разберемся, в казалось бы, очевидном, чтобы получить невероятное!

11.04.2019    36595    bolefirenko    117    

Загрузка картинок в справочники (Универсальная загрузка из табличного документа)

Обработка справочников Загрузка и выгрузка в Excel v8 1cv8.cf Бесплатно (free)

Пример загрузки картинок в справочник Номенклатура (с помощью обработки универсальная загрузка данных из табличного документа). Проверялось на конфигурации УТ 11.4.7.

28.05.2019    7919    rasdag    5    

Повторение строк заголовка на каждой странице при обработке файлов Excel средствами платформы 1С:Предприятие

Практика программирования Загрузка и выгрузка в Excel Разработка v8 Россия Бесплатно (free)

Вопросы повторения строк на каждой странице при работе с файлом Excel из программы, работающей в системе 1С.

23.01.2019    6582    senshkr    3    

Запись одной книги Excel на нескольких листах средствами 1С (без внешних компонент)

Загрузка и выгрузка в Excel v8 1cv8.cf Бесплатно (free)

Пользователи часто просят сохранить им стопиццот отчетов в один файл Excel, чтобы отчеты были в одном файле. Ну или клиент хочет счет, накладную и счет-фактуру получить в одном документе. 1С умеет это делать без всяких там COM-объектов. Давайте разберемся, куда нажимать и что крутить.

14.01.2019    22331    starik-2005    27    

Из Excel в 1С запросом Промо

Загрузка и выгрузка в Excel v8 1cv8.cf Бесплатно (free)

... ну, конечно, не прям так типовым языком запросов, а расширенным языком запросов. Речь пойдет о том, как "залить" данные в таблицы 1С и не пилить при этом бесконечного количества наколеночных обработок.

14.08.2018    20108    m-rv    5    

Как легко загружать данные из электронных таблиц (Excel, OpenOffice и т.д)

Загрузка и выгрузка в Excel v8 1cv8.cf Бесплатно (free)

Как легко загружать данные из электронных таблиц (Excel, OpenOffice и т.д). На примере загрузки в табличную часть документа Поступление товаров и услуг в УТ 11.4.

09.01.2019    13104    rasdag    14    

Работа с Excel через COM

Загрузка и выгрузка в Excel v8 1cv8.cf Бесплатно (free)

Несколько примеров работы с excel (ms office 2010, в моем случае) через COM.

01.10.2018    10443    jaroslav.h    0    

Выгрузка в Excel с использованием формата OpenXML, разбор файла sheet1.xml

Загрузка и выгрузка в Excel v8 1cv8.cf Бесплатно (free)

Судя по количеству просмотров темы https://infostart.ru/public/900022/ решил описать структуру файла Листа excel. На полноту не претендую, опишу то, что знаю.

21.09.2018    7864    user1045404    2    

Загрузка из EXCEL в 1С на платформе 8.3.6/8.3.7/8.3.8/8.3.9/8.3.10 (с картинками) Промо

Практика программирования Загрузка и выгрузка в Excel v8 1cv8.cf Бесплатно (free)

Импорт содержимого из файлов в форматах XLS (Microsoft Excel 97), Microsoft Office OpenXML (Microsoft Excel 2007- 2010) и ODS (OpenDocument) в таблицу значений.

06.04.2015    239512    StepByStep    75    

Выгрузка в Excel с использованием формата OpenXML

Загрузка и выгрузка в Excel v8 1cv8.cf Абонемент ($m)

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

1 стартмани

18.09.2018    4632    24    user1045404    9    

Маркировка ячеек цветом. Отладка загрузки данных из эксель.

Практика программирования Загрузка и выгрузка в Excel v8 1cv8.cf Бесплатно (free)

После 100-ой кривой загрузки родился способ, как отладить алгоритм.

05.07.2018    9369    Rustig    7    

Загрузка из Excel в управляемом приложении

Загрузка и выгрузка в Excel v8::УФ Бесплатно (free)

С появлением управляемого интерфейса стали актуальными вопросы в давно освоенных приемах работы. В частности, загрузка из файла.

30.11.2017    34177    alex_bitti    15    

Загрузка из EXCEL в 1С. Чтение файла XLSX средствами 1С. ПостроительDOM Промо

Универсальные обработки Загрузка и выгрузка в Excel Обмен через XML v8 1cv8.cf Бесплатно (free)

ПРАКТИЧЕСКОЕ ПОСОБИЕ РАЗРАБОТЧИКА: Метод "NativeXLSX" (ПостроительDOM). Обрабатываются данные EXCEL типов: "Строка", "Число", "Дата" ("Время"), "Булево", "Процент", а также изображения.

11.09.2014    73320    StepByStep    27    

Функция сохранения картинок из книги Excel в каталог с определением координат на листе

Загрузка и выгрузка в Excel Универсальные функции v8 Бесплатно (free)

Разбор файла *.xlsx как Web-архива, выгрузка изображений без потери качества, с определением положения изображений.

12.11.2017    10831    user634820_zergemoth    1    

Работа с Excel

Практика программирования Загрузка и выгрузка в Excel v8 Бесплатно (free)

Собрал различные полезности для работы с Excel из 1С. Иногда приходится форматировать документ Excel программно из 1С. Так вот, чтобы не искать постоянно на просторах интернета как сделать левое выравнивание в ячейке Excel из 1С и т.п. решил опубликовать это...

23.10.2017    44520    arakelyan    40    

Невалидный XLSX при сохранении Табличного документа

Загрузка и выгрузка в Excel v8 1cv8.cf Бесплатно (free)

Ошибка открытия XLSX файлов, созданных при сохранении Табличного документа. (Невалидный формат файла)

21.10.2017    14135    saddy    3    

Загрузка из EXCEL в 1С. MS ADODB.Connection Промо

Практика программирования Универсальные обработки Загрузка и выгрузка в Excel v8 1cv8.cf Бесплатно (free)

ПРАКТИЧЕСКОЕ ПОСОБИЕ РАЗРАБОТЧИКА: Метод "MS ADODB" (ADODB.Connection). Поддерживаемые типы: *.xls,*.xlsx.

30.11.2012    149756    StepByStep    89    

Почему при загрузке таблицы Excel в 1С возникают ошибки?

Загрузка и выгрузка в Excel v8 Бесплатно (free)

При загрузке из EXCEL в 1С методом MS ADODB.Connection столкнулся с некоторыми проблемами, которые попытался устранить в ниже приведенной статье. Надеюсь, что статья поможет вам сократить время разработки.  Особая благодарность Андрею М. за публикацию //infostart.ru/public/163640/

28.04.2017    16533    dakork    4    

Загрузка значений свойств номенклатуры в Альфа-Авто с использованием обработки загрузки данных из табличного документа

Загрузка и выгрузка в Excel Учет ТМЦ Учет ТМЦ v8 1cv8.cf Автомобили, автосервисы Россия УУ Бесплатно (free)

В публикации будет рассмотрено использование встроенной в отраслевую конфигурацию Альфа-Авто обработки по загрузке данных из табличного документа для заполнения значений дополнительных свойств номенклатуры.

13.10.2016    18059    miavolas    16    

Решение проблемы медленной загрузки из файла Excel, защищенного паролем

Загрузка и выгрузка в Excel v8 Россия Бесплатно (free)

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

27.09.2016    10848    HAMMER_59    4    

СТАБИЛЬНАЯ Загрузка справочника номенклатуры в 1С:Управление торговлей 8 из прайс-листа в Excel (код открыт скачать можно бесплатно) Промо

Перенос данных из 1C8 в 1C8 Загрузка и выгрузка в Excel v8 УТ10 Россия Бесплатно (free)

В таких случаях многие заказывают соответствующие обработки у собственных штатных программистов, фирм-франчайзи или сторонних разработчиков, но это дополнительные расходы и время. Как быть, если по различным причинам такой возможности нет? У каждого пользователя профессиональной версии 1С:Предприятие 8 подобная обработка уже есть! На диске ИТС! Типовая обработка «ЗагрузкаДанныхИзТабличногоДокумента.epf», находиться в разделе «Технологическая поддержка» > «Методическая поддержка 1С:Предприятие 8» > «Универсальные отчеты и обработки» > «Загрузка данных из табличного документа». Обратите внимание, начиная с Февраля 2010 г. на диске ИТС данная обработка для конфигураций на платформе 8.1 находиться в другом разделе: «Технологическая поддержка» > «Методическая поддержка 1С:Предприятие 8» > «Платформа 1С:Предприятие 8.1» > «Универсальные отчеты и обработки» > «Загрузка данных из табличного документа».

07.11.2011    183672    SkyLink2012    132    

Быстрая выгрузка больших плоских отчетов в Excel

Загрузка и выгрузка в Excel v8 Бесплатно (free)

Предлагаю способ для того, чтобы быстрее выгружать большие плоские отчеты из 1С 8 в Excel, без использования оперативной памяти на сервере и на клиенте, что очень важно, поскольку помогает избежать ошибок вида "Недостаточно памяти на клиенте" или "Недостаточно памяти на сервере". Не использует внешние компоненты. Минусы в том, что отчет выходит неформатированный, приходится настраивать ширину колонок, закрашивать границы, шрифты, жирность и т.п. Но когда отчет, выгружавшийся 3 часа, выгружается 20 минут, эти проблемы мои клиенты считают несущественными.

29.11.2015    17383    matveev.andrey.v    17    

Экспорт нескольких MXL таблиц в один XLS файл, на отдельные листы. Простой алгоритм

Загрузка и выгрузка в Excel Практика программирования v7.7 v8 Бесплатно (free)

Статья посвящена распространённому вопросу - как сохранить несколько таблиц (отчетов) в формате MXL, с которым работает 1С, на отдельные листы одного Excel файла. Освещается простой алгоритм решения проблемы штатными средствами, без использования внешних модулей и библиотек (не относящихся к 1С и Excel).

23.11.2015    17416    etmarket    14    

Как вывести табличный документ на печать в управляемой форме внешней обработки

Практика программирования Загрузка и выгрузка в Excel v8 v8::УФ 1cv8.cf Бесплатно (free)

Во внешней обработке формировался табличный документ, и его нужно было вывести на печать красиво.

02.09.2015    47572    kiv1c    28    

Как программисту быстро загрузить данные из Excel Промо

Загрузка и выгрузка в Excel v8 1cv8.cf Бесплатно (free)

Встала как-то разовая задача - загрузить данные из Excel в базу... Идея не новая, на ИС имеются уже готовые подобные разработки, но предлагается сделать самостоятельно. Пригодится в будущем.

26.10.2011    25665    DrAku1a    53    

Внедрение адресного склада в логистическом операторе

Бухгалтерский учет Загрузка и выгрузка в Excel Рабочее место Оптовая торговля Розничная торговля Учет ТМЦ Оптовая торговля Розничная торговля Учет ТМЦ v8 v8::ОУ УТ11 Оптовая торговля, дистрибуция, логистика Россия УУ УСН Бесплатно (free)

Каких-то 10 лет назад бюджет внедрений адресных складов составлял десятки тысяч долларов и месяцы работ целой команды, а теперь - типовое решение от 1С вполне рабочее и без кастомизации: немного интеграции, немного консультирования – и в продуктив. Внедрение адресного склада, в массе внедрений 1С:Управление торговлей, ред. 11.1 (далее УТ), штука до сих пор довольно-таки редкая. Данная статья описывает опыт одного маленького, но свежего внедрения адресного склада в УТ (11.1.10) и может быть интересна как практический кейс.

1 стартмани

10.08.2015    22439    papche    12    

Выгрузка таблицы значений в Excel

Загрузка и выгрузка в Excel v8 1cv8.cf Бесплатно (free)

Примитивно, грубо, без дизайна, но очень быстро.

28.06.2015    23325    Yashazz    31    

Скорость закачки с EXCEL при работе с большими файлами

Производительность и оптимизация (HighLoad) Загрузка и выгрузка в Excel v8 1cv8.cf Бесплатно (free)

Поставлена задача уменьшить время загрузки данных с EXCEL. Пока ждал ответа от разработчиков ядра, сам начал копать всё, что угодно. ЗАДАЧА решена, с чем спешу поделиться.

09.06.2015    16784    ybatiaev    33    

Чтение из Эксель-файла

Загрузка и выгрузка в Excel Практика программирования v8 1cv8.cf Бесплатно (free)

Некоторые выдержки из моих наработок, связанных с работой 1С и приложений майкрософт-оффис

26.05.2015    11669    mack198109    7    

Вывод таблицы значений в Excel

Практика программирования Загрузка и выгрузка в Excel v8 1cv8.cf Бесплатно (free)

Изложена методика вывода таблицы значений в Excel с помощью именованных ячеек.

21.01.2015    15519    scientes    6    

Хитрости сохранения табличного документа в Excel для дальнейшей работы с ним

Загрузка и выгрузка в Excel Практика программирования v7.7 v8 1cv8.cf 1cv7.md Бесплатно (free)

Все пользователи 1С всех версий (начиная с 7-й) сталкиваются с проблемой нормальной работы с данными, сохраненными в Excel файл. Есть некоторые хитрости, которые позволяют облегчить работу с сохраненными данными из 1С в формат Excel.

16.01.2015    90130    shmellevich    38    

Простой способ программного сохранения больших отчетов из СКД в формат Excel

Универсальные функции Загрузка и выгрузка в Excel v8::СКД 1cv8.cf Бесплатно (free)

Перерыв весь интернет не смог найти простого способа сохранить отчет с большим числом строк в формате Excel. Везде предлагалось писать процедуры построчной записи, ADO, COMSafeArray и прочее. Метод же, используемый во всех найденный публикациях "Результат.Записать(ИмяФайла,ТипФайлаТабличногоДокумента.XLSX)", не работает при большом числе строк. Публикация http://infostart.ru/public/77128/ натолкнула на простую идею, которую и реализовал.

07.08.2014    31332    den_valley    15    

Преобразование Универсального отчета в сводную таблицу Excel.

Загрузка и выгрузка в Excel v8 1cv8.cf Бесплатно (free)

Тем, кто часто пользуется сводной таблицей Excel, неудобно использовать формат, который получается на выходе универсального отчета. т.к. Универсальный отчет строится с группировками, а данные для сводной таблицы нужны в плоском виде.

16.06.2014    16886    Mos    4    

Как предотвратить возникновение ошибки при одновременном обращении пользователя и обработки к Excel.

Загрузка и выгрузка в Excel v8 1cv8.cf Бесплатно (free)

Если открыт (или открыть) файл Excel (к которому будет обращаться обработка), и активировать какую-либо ячейку или любое диалоговое окно и при этом обработка обратится к этому файлу, то возникнет ошибка. Так же, ошибка может возникнуть, если обработка запустила один экземпляр Excel, если пользователь, во время работы обработки откроет другой файл Excel или тот, к которому обращается обработка, то этот файл откроется в том же экземпляре приложения Excel и тогда опять возможна ошибка. Как этого избежать?

30.03.2014    19561    akor77    13    

Загрузка из EXCEL в 1С. Чтение файла XLSX средствами 1С. ЧтениеXML

Загрузка и выгрузка в Excel Обмен через XML Практика программирования v8 1cv8.cf Бесплатно (free)

ПРАКТИЧЕСКОЕ ПОСОБИЕ РАЗРАБОТЧИКА: Метод "NativeXLSX" (ЧтениеXML). Обрабатываются данные EXCEL типов: "Строка", "Число", "Дата" ("Время"), "Булево", "Процент".

01.11.2013    111733    StepByStep    76    

Восстановление размеров картинок в Excel

Практика программирования Загрузка и выгрузка в Excel v8 1cv8.cf Бесплатно (free)

Что делать, если искажается размер картинок.

19.09.2013    11374    Сисой    1    

Работа с Excel в фоновом задании

Загрузка и выгрузка в Excel v8 1cv8.cf Бесплатно (free)

Встала задача. По электронной почте приходят письма с вложениями таблиц Excel. Получение почты производится встроенным клиентом 1С фоновым заданием. Необходимо было по расписанию несколько раз в день извлекать из новых писем вложения и загружать из них данные. Тут я столкнулся с проблемой - работать с Excel в фоновом задании ни через COM, ни через ADO не удавалось. Вываливалась ошибка. Нигде в сети четкого решения проблемы я не обнаружил. В итоге, собирая информацию по крупицам из разных источников (порой и вовсе не связанных с 1с) и нескольких дней мучений все же я решил данную проблему. Ниже я опишу свое решение, чтобы помочь таким же, как я )

01.08.2013    67234    ltfriend    67    

Выгрузка Таблицы значений из 1С 8 в Excel с помощью MS ADO

Загрузка и выгрузка в Excel v8 1cv8.cf Бесплатно (free)

Функции для выгрузки Таблицы значений из 1С 8 в таблицу Excel с использованием объектов Microsoft ActiveX Data Objects (ADO) и Microsoft ActiveX Data Objects Extensions (ADOX).

10.06.2013    26383    AzagTot    17    

Подсистема "COMExchange": прямой доступ к EXCEL через ADO

Файловые протоколы обмена, FTP Загрузка и выгрузка в Excel Внешние источники данных v8 1cv8.cf УТ10 УПП1 Россия Бесплатно (free)

На примере этой, очень популярной, темы наглядно продемонстрированы нетривиальные возможности консоли запросов в составе подсистемы: 1. использование событий выполнения запроса (в том числе для запуска на выполнение других запросов) 2. запуск на выполнение запроса в цикле с подстановкой значений параметров из таблицы значений.

20.01.2013    24099    yuraos    7