Код 1C v 8.х Процедура СохранитьТаблицуВФайлExcel(Таблица, ПолноеИмяФайла="" , ОткрыватьДиалогВыбораФайла=Истина, ВыгружаемыеКолонки="" ) Экспорт
Если ПустаяСтрока( ПолноеИмяФайла) ИЛИ ОткрыватьДиалогВыбораФайла Тогда
Диалог = Новый ДиалогВыбораФайла( РежимДиалогаВыбораФайла. Сохранение) ;
Диалог. Заголовок = "Сохранение документа Excel" ;
Диалог. Фильтр = "Документ Excel (*.xls)|*.xls" ;
Диалог. Расширение = "xls" ;
Диалог. ПолноеИмяФайла = ПолноеИмяФайла;
Диалог. Каталог = УправлениеПользователями. ПолучитьЗначениеПоУмолчанию( глЗначениеПеременной( "глТекущийПользователь" ) , "ОсновнойКаталогФайлов" ) ;
Если ( Диалог. Выбрать( ) ) И ( НЕ ПустаяСтрока( Диалог. ПолноеИмяФайла) ) Тогда
ПолноеИмяФайла = Диалог. ПолноеИмяФайла;
Иначе
Возврат ;
КонецЕсли ;
КонецЕсли ;
ФайлНаДиске = Новый Файл( ПолноеИмяФайла) ;
Попытка
Состояние( "Выгрузка данных из 1С в Microsoft Excel..." ) ;
ExcelПриложение = Новый COMОбъект( "Excel.Application" ) ;
Книга = ExcelПриложение. WorkBooks. Add( ) ;
Лист = Книга. WorkSheets( 1 ) ;
Исключение
Сообщить( "Ошибка при загрузке Microsoft Excel."
+ Символы. ПС + ОписаниеОшибки( ) , СтатусСообщения. Внимание) ;
Возврат ;
КонецПопытки ;
Если ПустаяСтрока( ВыгружаемыеКолонки) Тогда
ТаблицаВыгрузки = Таблица. Скопировать( ) ;
Иначе
ТаблицаВыгрузки = Таблица. Скопировать( , ВыгружаемыеКолонки) ;
КонецЕсли ;
Для Кол = 0 По ТаблицаВыгрузки. Колонки. Количество( ) - 1 Цикл
Лист. Cells( 1 , Кол + 1 ) . Value = ТаблицаВыгрузки. Колонки[Кол]. Заголовок;
КонецЦикла ;
Попытка
Для Стр = 0 По ТаблицаВыгрузки. Количество( ) - 1 Цикл
Для Кол = 0 По ТаблицаВыгрузки. Колонки. Количество( ) - 1 Цикл
Если ТипЗнч( ТаблицаВыгрузки[Стр][Кол]) = Тип( "Число" ) Тогда
Лист. Cells( Стр + 2 , Кол + 1 ) . Value = ТаблицаВыгрузки[Стр][Кол];
Иначе
Лист. Cells( Стр + 2 , Кол + 1 ) . Value = Строка( ТаблицаВыгрузки[Стр][Кол]) ;
КонецЕсли ;
КонецЦикла ;
КонецЦикла ;
ExcelПриложение. DisplayAlerts = False;
Книга. SaveAs( ПолноеИмяФайла) ;
ExcelПриложение. ActiveWorkbook. Close( ) ;
ExcelПриложение. Quit( ) ;
Сообщить( "Файл выгружен успешно: " + ПолноеИмяФайла) ;
Исключение
Сообщить( "Ошибка записи данных файла :" + ПолноеИмяФайла) ;
Сообщить( ОписаниеОшибки( ) ) ;
Попытка
ExcelПриложение. Quit( ) ;
Исключение
КонецПопытки ;
КонецПопытки ;
КонецПроцедуры
Экспорт
Процедура ОсновныеДействияФормыЭкспорт(Кнопка) - выгружает из указанного справочника данные в режиме экспорта в файл в формате Microsoft Excel с указанным именем, используя преобразование данных к типу число и типу строка;
Код 1C v 8.х Процедура ОсновныеДействияФормыЭкспорт (Кнопка)
Попытка
Попытка
Состояние( "Выгрузка данных из 1С в Microsoft Excel..." ) ;
ExcelПриложение = Новый COMОбъект( "Excel.Application" ) ;
Исключение
Сообщить( "Ошибка при запуске Microsoft Excel."
+ Символы. ПС + ОписаниеОшибки( ) , СтатусСообщения. Внимание) ;
Возврат ;
КонецПопытки ;
Книга = ExcelПриложение. WorkBooks. Add( ) ;
Лист = Книга. WorkSheets( 1 ) ;
Колонка = 1 ;
Для каждого стр из ТП цикл
Если стр. Выгружать Тогда
Лист. Cells( 1 , Колонка) . Value = стр. НазваниеРеквизита;
Колонка = Колонка + 1 ;
КонецЕсли ;
КонецЦикла ;
выборка = Справочники[ИмяСправочника]. Выбрать( ) ;
СтрокаЛиста = 2 ;
Пока выборка. Следующий( ) Цикл
Колонка = 1 ;
Для каждого стр из ТП цикл
Если стр. Выгружать Тогда
Попытка
Если ТипЗнч( выборка[стр. НазваниеРеквизита]) = Тип( "Число" ) Тогда
Лист. Cells( СтрокаЛиста, Колонка) . NumberFormat = "0,00" ;
Лист. Cells( СтрокаЛиста, Колонка) . Value =
Формат( выборка[стр. НазваниеРеквизита], "ЧГ=0" ) ;
иначе
Лист. Cells( СтрокаЛиста, Колонка) . NumberFormat = "@" ;
Лист. Cells( СтрокаЛиста, Колонка) . Value =
Строка( выборка[стр. НазваниеРеквизита]) ;
КонецЕсли ;
исключение
Сообщить( "Ошибка установки значения для: " +
выборка[стр. НазваниеРеквизита]) ;
Сообщить( "Стр: " + СтрокаЛиста+ " Кол: " +
Колонка+ " Рек: " + стр. НазваниеРеквизита) ;
КонецПопытки ;
Колонка = Колонка + 1 ;
КонецЕсли ;
КонецЦикла ;
СтрокаЛиста = СтрокаЛиста + 1 ;
Состояние( "Экспорт из 1С в Excel " + СтрокаЛиста) ;
КонецЦикла ;
Книга. SaveAs( имяФайла) ;
ExcelПриложение. Quit( ) ;
Сообщить( "Файл выгружен успешно: " + имяФайла ) ;
Исключение
Сообщить( "Ошибка записи данных файла :" + имяФайла) ;
Сообщить( ОписаниеОшибки( ) ) ;
Попытка
ExcelПриложение. Quit( ) ;
Исключение
КонецПопытки ;
КонецПопытки ;
КонецПроцедуры
Импорт
Исходный код процедуры 1С для загрузки XLS файла:
Код 1C v 8.х Процедура ЧтениеXLSФайла(Элемент)
Если ПустаяСтрока( ИмяФайла) Тогда
Предупреждение( "Для запуска обработки необходимо предварительно выбрать файл Microsoft Excel." ) ;
Возврат ;
КонецЕсли ;
Попытка
Состояние( "Загрузка Microsoft Excel..." ) ;
ExcelПриложение = Новый COMОбъект( "Excel.Application" ) ;
Исключение
Сообщить( "Ошибка при загрузке Microsoft Excel." + Символы. ПС + ОписаниеОшибки( ) , СтатусСообщения. Внимание) ;
Возврат ;
КонецПопытки ;
Попытка
Состояние( "Открытие файла Microsoft Excel..." ) ;
ExcelФайл = ExcelПриложение. WorkBooks. Open( ИмяФайла) ;
Исключение
Сообщить( "Ошибка открытия файла Microsoft Excel." + ИмяФайла + Символы. ПС + ОписаниеОшибки( ) , СтатусСообщения. Внимание) ;
КонецПопытки ;
Попытка
Состояние( "Обработка файла Microsoft Excel..." ) ;
ExcelЛист = ExcelФайл. Sheets( 1 ) ;
xlCellTypeLastCell = 11 ;
ExcelПоследняяСтрока = ExcelЛист. Cells. SpecialCells( xlCellTypeLastCell) . Row;
ExcelПоследняяКолонка = ExcelЛист. Cells. SpecialCells( xlCellTypeLastCell) . Column;
Исключение
Сообщить( "Ошибка открытия листа №1 Microsoft Excel." + Символы. ПС + ОписаниеОшибки( ) , СтатусСообщения. Внимание) ;
ExcelПриложение. Quit( ) ;
КонецПопытки ;
КЧ = Новый КвалификаторыЧисла( 15 , 2 ) ;
КС = Новый КвалификаторыСтроки( 50 ) ;
Массив = Новый Массив;
Массив. Добавить( Тип( "Строка" ) ) ;
ОписаниеТиповС = Новый ОписаниеТипов( Массив, , КС) ;
Массив. Очистить( ) ;
Массив. Добавить( Тип( "Число" ) ) ;
ОписаниеТиповЧ = Новый ОписаниеТипов( Массив, , , КЧ) ;
ТаблицаДокумента. Очистить( ) ;
ТаблицаДокумента. Колонки. Очистить( ) ;
ТаблицаДокумента. Колонки. Добавить( "Номер" , ОписаниеТиповС, "Номер" , 5 ) ;
ТаблицаДокумента. Колонки. Добавить( "Артикул" , ОписаниеТиповС, "Артикул" , 11 ) ;
ТаблицаДокумента. Колонки. Добавить( "Описание" , ОписаниеТиповС, "Описание" , 25 ) ;
ТаблицаДокумента. Колонки. Добавить( "Цена" , ОписаниеТиповЧ, "Цена" , 6 ) ;
Для Строка = 1 По ExcelПоследняяСтрока Цикл
ОбработкаПрерыванияПользователя( ) ;
Стр= ТаблицаДокумента. Добавить( ) ;
Стр. Номер = Строка;
Попытка
Стр. Артикул = ExcelЛист. Cells( Строка, 1 ) . Value;
Стр. Описание = ExcelЛист. Cells( Строка, 2 ) . Value;
Стр. Цена = ExcelЛист. Cells( Строка, 3 ) . Value;
Исключение
Сообщить( "Ошибка чтения строки файла Microsoft Excel." + Строка + Символы. ПС + ОписаниеОшибки( ) , СтатусСообщения. Внимание) ;
КонецПопытки ;
Состояние( "Обработка файла Microsoft Excel : "
+ "строка " + Строка + " из " + ExcelПоследняяСтрока) ;
КонецЦикла ;
ExcelПриложение. Quit( ) ;
ЭлементыФормы. ТаблицаДокумента. Значение = ТаблицаДокумента;
ЭлементыФормы. ТаблицаДокумента. СоздатьКолонки( ) ;
КонецПроцедуры
Код 1C v 8.х
Процедура ОсновныеДействияФормыЭкспорт (Кнопка)
Попытка
Попытка
Состояние( "Выгрузка данных из 1С в Microsoft Excel..." ) ;
ExcelПриложение = Новый COMОбъект( "Excel.Application" ) ;
Исключение
Сообщить( "Ошибка при запуске Microsoft Excel."
+ Символы. ПС + ОписаниеОшибки( ) , СтатусСообщения. Внимание) ;
Возврат ;
КонецПопытки ;
Книга = ExcelПриложение. WorkBooks. Add( ) ;
Лист = Книга. WorkSheets( 1 ) ;
Колонка = 1 ;
Для каждого стр из ТП цикл
Если стр. Выгружать Тогда
Лист. Cells( 1 , Колонка) . Value = стр. НазваниеРеквизита;
Колонка = Колонка + 1 ;
КонецЕсли ;
КонецЦикла ;
выборка = Справочники[ИмяСправочника]. Выбрать( ) ;
СтрокаЛиста = 2 ;
Пока выборка. Следующий( ) Цикл
Колонка = 1 ;
Для каждого стр из ТП цикл
Если стр. Выгружать Тогда
Попытка
Если ТипЗнч( выборка[стр. НазваниеРеквизита]) = Тип( "Число" ) Тогда
Лист. Cells( СтрокаЛиста, Колонка) . NumberFormat = "0,00" ;
Лист. Cells( СтрокаЛиста, Колонка) . Value =
Формат( выборка[стр. НазваниеРеквизита], "ЧГ=0" ) ;
иначе
Лист. Cells( СтрокаЛиста, Колонка) . NumberFormat = "@" ;
Лист. Cells( СтрокаЛиста, Колонка) . Value =
Строка( выборка[стр. НазваниеРеквизита]) ;
КонецЕсли ;
исключение
Сообщить( "Ошибка установки значения для: " +
выборка[стр. НазваниеРеквизита]) ;
Сообщить( "Стр: " + СтрокаЛиста+ " Кол: " +
Колонка+ " Рек: " + стр. НазваниеРеквизита) ;
КонецПопытки ;
Колонка = Колонка + 1 ;
КонецЕсли ;
КонецЦикла ;
СтрокаЛиста = СтрокаЛиста + 1 ;
Состояние( "Экспорт из 1С в Excel " + СтрокаЛиста) ;
КонецЦикла ;
Книга. SaveAs( имяФайла) ;
ExcelПриложение. Quit( ) ;
Сообщить( "Файл выгружен успешно: " + имяФайла ) ;
Исключение
Сообщить( "Ошибка записи данных файла :" + имяФайла) ;
Сообщить( ОписаниеОшибки( ) ) ;
Попытка
ExcelПриложение. Quit( ) ;
Исключение
КонецПопытки ;
КонецПопытки ;
КонецПроцедуры
Код 1C v 7.x
Процедура Вывод()
Попытка
Application= СоздатьОбъект( "Excel.Application" ) ;
Исключение
Сообщить( ОписаниеОшибки( ) , "!!!" ) ;
Сообщить( "Возможно, MS Excel не установлен на этом компьютере." ) ;
Возврат ;
КонецПопытки ;
WorkBook= Application. WorkBooks. Add( ) ;
Window= WorkBook. Windows( 1 ) ;
Window. Visible= 0 ;
Если WorkBook. Worksheets. Count= 0 Тогда
WorkBook. Worksheets. Add( ) ;
Иначе
Application. DisplayAlerts= 0 ;
Пока WorkBook. Worksheets. Count> 1 Цикл
WorkBook. Worksheets( 1 ) . Delete( ) ;
КонецЦикла ;
Application. DisplayAlerts= - 1 ;
КонецЕсли ;
Worksheet= WorkBook. Worksheets( 1 ) ;
Worksheet. Name= "Пример вывода" ;
Worksheet. Range( "A1" ) . Value= "Пример вывода из 1С:Предприятия в MS Excel" ;
Worksheet. Range( "A2" ) . Value= "сегодня " + ТекущаяДата( ) ;
Worksheet. Range( "A1:A2" ) . Font. Size= 14 ;
Worksheet. Range( "A1:A2" ) . Font. Bold= - 1 ;
Worksheet. Columns( 1 ) . ColumnWidth= 60 ;
Worksheet. Columns( 2 ) . ColumnWidth= 15 ;
Worksheet. Columns( 3 ) . ColumnWidth= 15 ;
Worksheet. Range( "A4" ) . Value= "Первая колонка" ;
Для ы= 7 по 10 Цикл
Worksheet. Range( "A4" ) . Borders( ы) . LineStyle= 1 ;
Worksheet. Range( "A4" ) . Borders( ы) . Weight= - 4138 ;
КонецЦикла ;
Worksheet. Range( "A4" ) . Interior. ColorIndex= 15 ;
Worksheet. Range( "A4" ) . HorizontalAlignment= - 4108 ;
Worksheet. Range( "B4" ) . Value= "Вторая" ;
Для ы= 7 по 10 Цикл
Worksheet. Range( "B4" ) . Borders( ы) . LineStyle= 1 ;
Worksheet. Range( "B4" ) . Borders( ы) . Weight= - 4138 ;
КонецЦикла ;
Worksheet. Range( "B4" ) . Interior. ColorIndex= 15 ;
Worksheet. Range( "B4" ) . HorizontalAlignment= - 4108 ;
Worksheet. Range( "C4" ) . Value= "Третья" ;
Для ы= 7 по 10 Цикл
Worksheet. Range( "C4" ) . Borders( ы) . LineStyle= 1 ;
Worksheet. Range( "C4" ) . Borders( ы) . Weight= - 4138 ;
КонецЦикла ;
Worksheet. Range( "C4" ) . Interior. ColorIndex= 15 ;
Worksheet. Range( "C4" ) . HorizontalAlignment= - 4108 ;
Worksheet. Outline. SummaryRow= 0 ;
Worksheet. Range( "A5" ) . Value= "Объект аналитики" ;
Worksheet. Range( "A5" ) . Font. ColorIndex= 5 ;
Worksheet. Range( "B5" ) . Value= 123.45 ;
Worksheet. Range( "B5" ) . Font. ColorIndex= 5 ;
Worksheet. Range( "C5" ) . Value= 678.9 ;
Worksheet. Range( "C5" ) . Font. ColorIndex= 5 ;
Worksheet. Range( "A6" ) . Value= "Объект аналитики" ;
Worksheet. Range( "A6" ) . Font. ColorIndex= 3 ;
Worksheet. Range( "B6" ) . Value= 123.45 ;
Worksheet. Range( "B6" ) . Font. ColorIndex= 3 ;
Worksheet. Range( "C6" ) . Value= 678.9 ;
Worksheet. Range( "C6" ) . Font. ColorIndex= 3 ;
Worksheet. Range( "A7" ) . Value= "Объект аналитики" ;
Worksheet. Range( "B7" ) . Value= 123.45 ;
Worksheet. Range( "C7" ) . Value= 678.9 ;
Worksheet. Range( "A8" ) . Value= "Объект аналитики" ;
Worksheet. Range( "B8" ) . Value= 123.45 ;
Worksheet. Range( "C8" ) . Value= 678.9 ;
Worksheet. Range( "A9" ) . Value= "Объект аналитики" ;
Worksheet. Range( "A9" ) . Font. ColorIndex= 3 ;
Worksheet. Range( "B9" ) . Value= 123.45 ;
Worksheet. Range( "B9" ) . Font. ColorIndex= 3 ;
Worksheet. Range( "C9" ) . Value= 678.9 ;
Worksheet. Range( "C9" ) . Font. ColorIndex= 3 ;
Worksheet. Range( "A10" ) . Value= "Объект аналитики" ;
Worksheet. Range( "B10" ) . Value= 123.45 ;
Worksheet. Range( "C10" ) . Value= 678.9 ;
Worksheet. Range( "A11" ) . Value= "Объект аналитики" ;
Worksheet. Range( "B11" ) . Value= 123.45 ;
Worksheet. Range( "C11" ) . Value= 678.9 ;
Worksheet. Range( "A12" ) . Value= "Объект аналитики" ;
Worksheet. Range( "A12" ) . Font. ColorIndex= 5 ;
Worksheet. Range( "B12" ) . Value= 123.45 ;
Worksheet. Range( "B12" ) . Font. ColorIndex= 5 ;
Worksheet. Range( "C12" ) . Value= 678.9 ;
Worksheet. Range( "C12" ) . Font. ColorIndex= 5 ;
Worksheet. Range( "A13" ) . Value= "Объект аналитики" ;
Worksheet. Range( "A13" ) . Font. ColorIndex= 3 ;
Worksheet. Range( "B13" ) . Value= 123.45 ;
Worksheet. Range( "B13" ) . Font. ColorIndex= 3 ;
Worksheet. Range( "C13" ) . Value= 678.9 ;
Worksheet. Range( "C13" ) . Font. ColorIndex= 3 ;
Worksheet. Range( "A14" ) . Value= "Объект аналитики" ;
Worksheet. Range( "B14" ) . Value= 123.45 ;
Worksheet. Range( "C14" ) . Value= 678.9 ;
Worksheet. Range( "A15" ) . Value= "Объект аналитики" ;
Worksheet. Range( "B15" ) . Value= 123.45 ;
Worksheet. Range( "C15" ) . Value= 678.9 ;
Worksheet. Range( "A16" ) . Value= "Объект аналитики" ;
Worksheet. Range( "A16" ) . Font. ColorIndex= 3 ;
Worksheet. Range( "B16" ) . Value= 123.45 ;
Worksheet. Range( "B16" ) . Font. ColorIndex= 3 ;
Worksheet. Range( "C16" ) . Value= 678.9 ;
Worksheet. Range( "C16" ) . Font. ColorIndex= 3 ;
Worksheet. Range( "A17" ) . Value= "Объект аналитики" ;
Worksheet. Range( "B17" ) . Value= 123.45 ;
Worksheet. Range( "C17" ) . Value= 678.9 ;
Worksheet. Range( "A18" ) . Value= "Объект аналитики" ;
Worksheet. Range( "B18" ) . Value= 123.45 ;
Worksheet. Range( "C18" ) . Value= 678.9 ;
Для НомСтр= 5 по 18 Цикл
Для ы= 7 по 10 Цикл
Worksheet. Range( "A" + НомСтр) . Borders( ы) . LineStyle= 1 ;
Worksheet. Range( "B" + НомСтр) . Borders( ы) . LineStyle= 1 ;
Worksheet. Range( "C" + НомСтр) . Borders( ы) . LineStyle= 1 ;
КонецЦикла ;
КонецЦикла ;
Worksheet. Range( "7:8" ) . Rows. Group( ) ;
Worksheet. Range( "10:11" ) . Rows. Group( ) ;
Worksheet. Range( "14:15" ) . Rows. Group( ) ;
Worksheet. Range( "17:18" ) . Rows. Group( ) ;
Worksheet. Range( "6:11" ) . Rows. Group( ) ;
Worksheet. Range( "13:18" ) . Rows. Group( ) ;
Worksheet. Outline. ShowLevels( 1 ) ;
Попытка
Worksheet. Range( "B5:C18" ) . NumberFormat= "# ##0.00" ;
Исключение
Попытка
Worksheet. Range( "B5:C18" ) . NumberFormat= "# ##0,00" ;
Исключение
КонецПопытки ;
КонецПопытки ;
Application. Visible= - 1 ;
Window. Visible= - 1 ;
Worksheet. Range( "A5" ) . S_elect( ) ;
Window. FreezePanes = - 1 ;
КонецПроцедуры