Работа с файлом Excel из 1С (COM-соединение).
Обработка позволяет редактировать ячейки и параметры страницы (для области печати, например) 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 (автор: Светлый ум):
мИмяШаблона= "ШаблонРеестр";
ФайлОбработки = Новый Файл(ИспользуемоеИмяФайла);
//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();
КонецПопытки;
При наличии полезной информации, укажите ссылку в комментах, пожалуйста.
Качественно оформленная статья +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 = СтрокаСФормулойИтогоОстатки;