1С:ExcelReport - COM компонента для вывода в Excel в стиле 1С
Когда необходимо создать из 1С файл Excel с богатым форматированием и встроенными в ячейки формулами, приходится писать на языке 1С довольно объемный код. Предлагаемая компонента позволяет создать макет Excel и вывести отчет «как в 1С», с использованием простого задания параметров и вывода/присоединения секций.
Комментарии
В избранное
Подписаться на ответы
Сортировка:
Древо развёрнутое
Свернуть все
Пример для 1с 8:
Попытка
Экс = ПолучитьCOMОбъект("", "rsa1CExtRep.ExcelAs1CReport");
Исключение
Сообщить("Не получилось создать объект ""rsa1CExtRep.ExcelAs1CReport""!");
Возврат;
КонецПопытки;
Экс.ИсходнаяТаблица("d:\Шаблоны\Шаблон отчета.xls", "Лист1");
Экс.УстановитьЗначениеПеременной("ИмяОтчета", "Отчет по затратам");
Экс.ВывестиСекцию("Отчет");
Экс.СохранитьКак("d:\"+ИмяПользователя()+"\Отчет.xls");
Экс.Показать();
Показать
(3) вы наверное имели ввиду не API, а технологию, на которой работает компонента? Технология COM, а точнее OLE Automation, написана на Vb 6. Написана давно и с тех пор постоянно мной применяется... пережила 7.7 и успешно живет на 8.3...
API компоненты это те методы и свойства, которые она предоставляет. Если вы все же имели ввиду API компоненты, то документации я не делал... API можно посмотреть в любом Object Browser, например, в Word или Excel.
В компоненте 2 класса:
ExcelAs1CReport - для создания отчета, как описано в статье
ExcelTo1CReader - для чтения данных из Excel по именам колонок, но этот класс можно считать устаревшим, т.к. технология чтения из Excel со времен 7.7 очень развилась и в 8.3 врядли у кого-то с этим проблемы... хотя эта компонента сама ищет заголовки колонок и в некоторых случаях может быть полезна, если пользователи присылают таблицы в которых заголовки все время в разных колонках и столбцах...
ExcelAs1CReport имеет следующие методы:
- Public Sub УстановитьФормулуЯчейки(Строка As Long, Колонка As Long, Формула As String)
- Public Sub ИсходнаяТаблица(ПутьКФайлуШаблонаТаблицы As String, ИмяТаблицы As String)
- Public Sub ВывестиСекцию(ИмяСекции As String, Optional ИзмШиринуКолонок As Long = 1, Optional ИзмВысотуСтрок As Long = 1)
- Public Sub ПрисоединитьСекцию(ИмяСекции As String, Optional ИзмШиринуКолонок As Long = 1)
- Public Sub НоваяСтраница()
- Public Sub Показать()
- Public Sub СохранитьКак(ПутьКФайлу As String)
- Public Sub УстановитьЗначениеПеременной(ИмяПеременной As String, Значение As Variant)
- Public Function ПоказатьОшибки() As String
- Public Function ЛистШаблона() As Object
- Public Function ЛистОтчета() As Object
- Public Function ТекущаяСтрока() As Long
- Public Function ТекущаяКолонка() As Long
- Public Function ТекущаяВысотаСекции() As Long
Если вам компонента действительно нужна, то спрашивайте, что не понятно, буду отвечать...
API компоненты это те методы и свойства, которые она предоставляет. Если вы все же имели ввиду API компоненты, то документации я не делал... API можно посмотреть в любом Object Browser, например, в Word или Excel.
В компоненте 2 класса:
ExcelAs1CReport - для создания отчета, как описано в статье
ExcelTo1CReader - для чтения данных из Excel по именам колонок, но этот класс можно считать устаревшим, т.к. технология чтения из Excel со времен 7.7 очень развилась и в 8.3 врядли у кого-то с этим проблемы... хотя эта компонента сама ищет заголовки колонок и в некоторых случаях может быть полезна, если пользователи присылают таблицы в которых заголовки все время в разных колонках и столбцах...
ExcelAs1CReport имеет следующие методы:
- Public Sub УстановитьФормулуЯчейки(Строка As Long, Колонка As Long, Формула As String)
- Public Sub ИсходнаяТаблица(ПутьКФайлуШаблонаТаблицы As String, ИмяТаблицы As String)
- Public Sub ВывестиСекцию(ИмяСекции As String, Optional ИзмШиринуКолонок As Long = 1, Optional ИзмВысотуСтрок As Long = 1)
- Public Sub ПрисоединитьСекцию(ИмяСекции As String, Optional ИзмШиринуКолонок As Long = 1)
- Public Sub НоваяСтраница()
- Public Sub Показать()
- Public Sub СохранитьКак(ПутьКФайлу As String)
- Public Sub УстановитьЗначениеПеременной(ИмяПеременной As String, Значение As Variant)
- Public Function ПоказатьОшибки() As String
- Public Function ЛистШаблона() As Object
- Public Function ЛистОтчета() As Object
- Public Function ТекущаяСтрока() As Long
- Public Function ТекущаяКолонка() As Long
- Public Function ТекущаяВысотаСекции() As Long
Если вам компонента действительно нужна, то спрашивайте, что не понятно, буду отвечать...
(3) кстати, только сейчас заметил, что в статье, в примере, есть ошибка...
там в поле Цена устанавливается формула, а не значение и должно быть:
не Экс.УстановитьЗначениеПеременной("Цена",Цена);
а Экс.УстановитьФормулуЯчейки(НомерСтроки, НомерКолонки, Цена);
где НомерСтроки, НомерКолонки надо посчитать при выводе....
там в поле Цена устанавливается формула, а не значение и должно быть:
не Экс.УстановитьЗначениеПеременной("Цена",Цена);
а Экс.УстановитьФормулуЯчейки(НомерСтроки, НомерКолонки, Цена);
где НомерСтроки, НомерКолонки надо посчитать при выводе....
макет надо делать в Эксель, в этом и был смысл компоненты... в mxl нельзя создать формулы в ячейках... да и форматирование точно скопировать из mxl в эксель трудно, хотя последние версии 1с не плохо с этим справляются, но не все равно не на 100%... а сам макет эксель можно зашить в конфигурацию и копировать во временный файл перед использованием, в этом проблемы нет...
Вакансии
Ведущий разработчик 1С / Team lead отдела разработки 1С
Москва
зарплата от 300 000 руб. до 300 000 руб.
Полный день
Москва
зарплата от 300 000 руб. до 300 000 руб.
Полный день