Выгрузка в Excel (эксель)

21.12.15

Разработка - Инструментарий разработчика

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

Скачать исходный код

Наименование Файл Версия Размер
Выгрузка_в_Эксель
.epf 31,40Kb
32
.epf 31,40Kb 32 Скачать

Обработка позволяет редактировать ячейки и параметры страницы (для области печати, например)  Excel.

Это не готовая обработка, которую можно сразу брать и пользоваться, она предназначена для получения готового кода (процедур и функций).

Вот параметры процедур для работы с ячейками:

Процедура ЗаполнитьПолеЭксель(
	комментарийКод = "пусто",
	Ячейка, 					
	Значение = "(не заполнять)", 			
					// шрифт
	шрифтНазвание = "Arial",
	шрифтРазм = 8,
	шрифтКурсив = 0,
	шрифтЖирн = 0,
	шрифтПодчеркивание = -1,
					// формат текста
	горизонталь = 3,
	вертикаль = 2,		
	перенос = 0,
	ориентация = 0,
					// формат границы ячейки
	линия = 1,
					// формат ячейки
	ширина = "по умолчанию",				// в Excel - 8
	высота = "по умолчанию", 				// в Excel - 14.40
					// цвет
	цветШрифта = -1,
	цветЯчейки = -1,
	цветГраницы = -1,
	формула = -1,
	формат = -1,
	границы = "00000000",
	стильГраницы = 1,
	высотаГраницы = 0
	)
Процедура ПараметрыСтраницы(
ОбъектЭксель, // Объект Excel (для обращения к функциям Экселя)
Страница, // Страница (объект Excel)
ШапкаЛево = "", // LeftHeader = ""
ШапкаЦентр = "", // CenterHeader = "&""-,Bold""&12&F" & Chr(10) & "&A"
ШапкаПраво = "", // RightHeader = ""
ПодвалЛево = "", // LeftFooter = "&9&Z&F"
ПодвалЦентр = "", // CenterFooter = ""
ПодвалПраво = "", // RightFooter = "&P/&N"
ОтступЛево = 0.5, // LeftMargin = Application.InchesToPoints(0.7)
ОтступПраво = 0.2, // RightMargin = Application.InchesToPoints(0.7)
ОтступВерх = 1.5, // TopMargin = Application.InchesToPoints(0.75)
ОтступНиз = 2.4, // BottomMargin = Application.InchesToPoints(0.75)
ОтступШапка = 1.3, // HeaderMargin = Application.InchesToPoints(0.3)
ОтступПодвал = 0.8, // FooterMargin = Application.InchesToPoints(0.3)
ПечатьВерхушка = ЛОЖЬ, // PrintHeadings = False
ПечатьГраницы = ИСТИНА, // PrintGridlines = True
ПечатьКомментарии = -4142, // PrintComments = xlPrintNoComments
ПечатьКачество = 300, // PrintQuality = 600
ЦентрироватьГоризонталь = ИСТИНА, // CenterHorizontally = True
ЦентрироватьВертикаль = ЛОЖЬ, // CenterVertically = False
Ориентация = 1, // Orientation = xlLandscape
Драфт = ЛОЖЬ, // Draft = False
РазмерСтраницы = 9, // PaperSize = xlPaperLetter
НумерацияПервойСтраницы = -4105, // FirstPageNumber = xlAutomatic
Ордер = 1, // Order = xlDownThenOver
ЧерноБелое = ЛОЖЬ, // BlackAndWhite = False
Увеличение = 100, // Zoom = False
СтраницПоШирине = 1, // FitToPagesWide = 1
СтраницПоВысоте = 1, // FitToPagesTall = False

 

Также внутри можно найти пару полезностей, типа Генерации случайных названий, процедуру РГБ (RGB) для Excel'a и прочее.

 

Обработка содержит около 1500 полезного кода. Есть комментарии к процедурам и функциям по работе с параметрами и возвращаемыми значениями.

 

Дополнительная информация к публикации.

1. Тема на форуме Infostart'a (автор: Светлый ум):

Программно открыть файл Excel 

мИмяШаблона= "ШаблонРеестр";    
    ФайлОбработки = Новый Файл(ИспользуемоеИмяФайла);
    
    //1) Заходим в Excel    
    Excel = Новый COMОбъект("Excel.Application");
    ИмяВременногоФайла = ПолучитьИмяВременногоФайла("xlsx");
    ИмяВременногоФайла2 = ПолучитьИмяВременногоФайла("xlsx");
    ДвоичныеДанные = ПолучитьМакет("ШаблонExcel");
    ДвоичныеДанные.Записать(ИмяВременногоФайла);
    Книга = Excel.WorkBooks.Open(ИмяВременногоФайла);
    Лист = Книга.WorkSheets(1);
    
    //2) Как-то редактируем Excel
    ШапкаОтчетаОбласть = Лист.Range("Шапка");
    ШапкаОтчетаОбласть.Find("<ДатаОтчета>").Value = Строка(Формат(СсылкаНаОбъект.ПолучитьОбъект().Дата, "ДЛФ=ДД"));
        
    //3) Сохраняем Excel 
    Книга.SaveAs(ИмяВременногоФайла2);  
    УдалитьФайлы(ИмяВременногоФайла);
    
    // 4) Открываем Excel, для редактирования пользователем
    Excel.Visible    = Истина;

 

2. Тема на форуме Infostart'a (автор ответа: gfiji):

Как запустить макрос, записанный в книге Microsoft Excel 

Попытка 

    // Создать объект. 
    Excel = Новый COMОбъект("Excel.Application"); 

Исключение 
    Сообщить("Не удалось инициализировать Excel"); 
    Возврат; 
КонецПопытки; 

Попытка 

    // В реальном примере путь может быть совершенно другим. 
    Excel.Workbooks.Open("c:\doc.xls"); 

    // Запустить макрос с именем "Оформление".
    Excel.Run("Оформление"); 
    Excel.Visible = Истина; 

Исключение 

    // Если произойдет ошибка выводятся данные об ошибке и объект закрывается. 
    Сообщить(ОписаниеОшибки()); 
    Excel.Quit(); 
КонецПопытки; 

 

3. Тема на форуме Infostart'a (автор ответа: jefti):

Как создать документ программы Microsoft Excel по оформлению, приведенному в другом документе 

Попытка 

    // Создать объект. 
    Excel = Новый COMОбъект("Excel.Application"); 

Исключение 
    Сообщить("Не удалось инициализировать Excel"); 
    Возврат; 
КонецПопытки; 

Попытка 

    // Если при отработке следующего фрагмента кода произойдет ошибка объект "Excel.Application" будет закрыт. 

    // Открыть книгу, содержащую шаблон оформления. 
    Excel.Workbooks.Open("c:\doc.xls"); 
    НомерКниги = Excel.Workbooks.Count; 
    Книга = Excel.Workbooks.Item(НомерКниги); 
    Лист = Excel.ActiveSheet; 

    // Создать новую книгу (в нее будем записывать данные). 
    Excel.Application.Workbooks.Add(1); 
    НомерКниги = Excel.Workbooks.Count; 
    КнигаНовая = Excel.Workbooks.Item(НомерКниги); 
    ЛистНовый = Excel.ActiveSheet; 

    // Установить ширину колонки в новой книге. 
    ЛистНовый.Columns("B").ColumnWidth = 40; 

    // Копировать область из книги-шаблона в новую книгу. 
    Лист.Range("Шапка").Copy(ЛистНовый.Range("A1:E3")); 
    ЛистНовый.Cells(1, 1).Value = "Наименование контрагента"; 

    // Считаем, что в нашем случае необходимо сформировать только две строки табличной части 
    Для НомерСтроки = 1 По 2 Цикл 
        Лист.Range("Строка").Copy(ЛистНовый.Range(ЛистНовый.Cells(3 + НомерСтроки,1), ЛистНовый.Cells(3 + НомерСтроки, 5))); 

        // Записать значение в ячейку листа новой таблицы 
        // в реальном примере данные будут браться из информационной базы 
        ЛистНовый.Cells(3 + НомерСтроки, 1).Value = НомерСтроки; 
        ЛистНовый.Cells(3 + НомерСтроки, 2).Value = "Наименование номенклатурной позиции " + Строка(НомерСтроки); 
        ЛистНовый.Cells(3 + НомерСтроки, 3).Value = НомерСтроки; 
        ЛистНовый.Cells(3 + НомерСтроки, 4).Value = НомерСтроки; 
        ЛистНовый.Cells(3 + НомерСтроки, 5).Value = НомерСтроки; 
    КонецЦикла; 

    Excel.Visible = Истина; 

Исключение 
    Сообщить(ОписаниеОшибки()); 
    Excel.Quit(); 
КонецПопытки; 

При наличии полезной информации, укажите ссылку в комментах, пожалуйста.

Выгрузка в Excel

См. также

Infostart Toolkit: Инструменты разработчика 1С 8.3 на управляемых формах

Инструментарий разработчика Роли и права Запросы СКД Платформа 1С v8.3 Управляемые формы Запросы Система компоновки данных Конфигурации 1cv8 Платные (руб)

Набор инструментов программиста и специалиста 1С для всех конфигураций на управляемых формах. В состав входят инструменты: Консоль запросов, Консоль СКД, Консоль кода, Редактор объекта, Анализ прав доступа, Метаданные, Поиск ссылок, Сравнение объектов, Все функции, Подписки на события и др. Редактор запросов и кода с раскраской и контекстной подсказкой. Доработанный конструктор запросов тонкого клиента. Продукт хорошо оптимизирован и обладает самым широким функционалом среди всех инструментов, представленных на рынке.

10000 руб.

02.09.2020    124810    682    389    

732

Infostart PrintWizard

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

Инструмент, позволяющий абсолютно по-новому взглянуть на процесс разработки печатных форм. Благодаря конструктору можно значительно снизить затраты времени на разработку печатных форм, повысить качество и "прозрачность" разработки, а также навести порядок в многообразии корпоративных печатных форм.

18000 руб.

06.10.2023    7753    24    6    

42

Infostart УДиФ: Управление данными и формами

Инструменты администратора БД Инструментарий разработчика Роли и права Платформа 1С v8.3 Конфигурации 1cv8 Россия Платные (руб)

Расширение позволяет без изменения кода конфигурации выполнять проверки при вводе данных, скрывать от пользователя недоступные ему данные, выполнять код в обработчиках. Не изменяет данные конфигурации, легко устанавливается практически на любую конфигурацию на управляемых формах.

10000 руб.

10.11.2023    4265    12    2    

36

SALE! %

PowerTools

Инструментарий разработчика Инструменты администратора БД Платформа 1С v8.3 Управляемые формы Конфигурации 1cv8 Россия Платные (руб)

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

3600 2280 руб.

14.01.2013    178621    1083    0    

861

Многопоточность. Универсальный «Менеджер потоков» 2.1

Инструментарий разработчика Платформа 1С v8.3 Конфигурации 1cv8 Россия Платные (руб)

Восстановление партий или взаиморасчетов, расчет зарплаты, пакетное формирование документов или отчетов - теперь все это стало доступнее. * Есть желание повысить скорость работы медленных алгоритмов! Но... * Нет времени думать о реализации многопоточности? * о запуске и остановке потоков? * о поддержании потоков в рабочем состоянии? * о передаче данных в потоки и как получить ответ из потока? * об организации последовательности? Тогда ЭТО - то что надо!!!

5000 руб.

07.02.2018    99605    239    97    

298

[ЕХТ] Фреймворк для Расширений 1С

Инструментарий разработчика Платформа 1С v8.3 Управляемые формы Платные (руб)

"Фреймворк для Расширений 1С" это универсальное и многофункциональное решение, упрощающее разработку и поддержку создаваемых Расширений. Поставляется в виде комплекта из нескольких Расширений с открытым исходным кодом. Работает в любых Конфигурациях в режиме Управляемого приложения с режимом совместимости 8.3.12 и выше без необходимости внесения изменений в Конфигурацию.

3000 руб.

27.08.2019    18376    6    8    

40

Выполнение произвольного кода или запроса с параметрами через Web-сервис (замена COM-подключений)

Инструментарий разработчика Обмен между базами 1C Платформа 1С v8.3 Платные (руб)

В процессе работы в 1С часто возникает потребность получить данные из другой базы.  Обычно это делается через COM-соединение, и время выполнения запроса при этом оставляет желать лучшего. В данной публикации представлено универсальное решение, позволяющее практически моментально выполнить произвольный код или запрос с параметрами в другой информационной базе через Web-сервис.

2400 руб.

24.09.2019    23853    16    15    

33

1С HTML Шаблоны / HTML Templates

Инструментарий разработчика Платформа 1С v8.3 Конфигурации 1cv8 Платные (руб)

Быстрая и удобная обработка для работы с шаблонами HTML. Позволяет легко и быстро формировать код HTML.

2040 руб.

27.12.2017    28309    3    10    

16
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. Светлый ум 406 21.12.15 12:48 Сейчас в теме
Качественно оформленная статья +1
От себя добавлю пару плюшек:


//### Примеры работы с Excel ячейками ###

//1) Стандартное форматирование числа
// mSheet.Cells(row,i).Value=Формат(стр[мИмя],"ЧДЦ=2; ЧН=; ЧГ=0");

//2) Стандартное форматирование даты
// ШапкаОтчета.Find("<ДатаОтчета>").Value = Формат(ТекущаяДата(), "ДФ=dd.MM.yyyy");

//3)Программная установка формул в ячейку - Excel в 1с.
а) Например, нужно посчитать сумму в столбце 8 в той же строке из столбца 1+ столбца 2.
СтрокаСФормулой = "=RC[-7]+ RC[-6]";
Лист.Cells(НомерСтроки,НомерКолонки).Formula = СтрокаСФормулой.
---------------------
б) Считаем итого по строкам:
//Шаблон формулы: "=SUM(F13:F14)";
СтрокаСФормулойИтогоОстатки = "=SUM(F" + Строка(НомерИсходнойСтрокиОстаткиОборотыExcel) +
":F" + Строка(НомерСтрокиОстаткиОборотыДляФормулы) + ")";

ТекСтрокаПодвалИтогоОстаток.Value = СтрокаСФормулойИтогоОстатки;
IT_Avito; timeforlive; +2
Оставьте свое сообщение