Быстрая загрузка данных большого размера файла Excel в многомерный Массив Код 1C v 8.х
Перем СерверExcel;
Процедура КнопкаВыполнитьНажатие(Кнопка)
ФайлХЛС= СерверExcel. Application. Workbooks. Open( ДокументХЛС) ;
КонечнаяСтрокаДанных= ФайлХЛС. ActiveSheet. UsedRange. Rows. Count;
КоличествоКолонокДанных= ФайлХЛС. ActiveSheet. UsedRange. Columns. Count;
Состояние( "Загрузка в память данных ведомости..." ) ;
ExcelЛист= ФайлХЛС. ActiveSheet;
Область = СерверExcel. Range( ExcelЛист. Cells( 1 , 1 ) , ExcelЛист. Cells( КонечнаяСтрокаДанных, КоличествоКолонокДанных) ) ;
МассивДанныхEXEL = Область. Value. Выгрузить( ) ;
КонецПроцедуры
Процедура ИнициализацииЕкселя()
Состояние( "Происходит инициализация EXCEL..." ) ;
Попытка
СерверExcel1 = Новый COMОбъект( "Excel.Application" ) ;
СерверExcel1. DisplayAlerts = 0 ;
Исключение
ЗапущенExcel = 0 ;
Сообщить( ОписаниеОшибки( ) , "!" ) ;
КонецПопытки ;
КонецПроцедуры
Категория:
Работа с Microsoft Office и OpenOffice Экспорт и Импорт данных 1С - Microsoft Excel Экспорт
Процедура ОсновныеДействияФормыЭкспорт(Кнопка) - выгружает из указанного справочника данные в режиме экспорта в файл в формате 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( ) ;
ЭлементыФормы. ТаблицаДокумента. Значение = ТаблицаДокумента;
ЭлементыФормы. ТаблицаДокумента. СоздатьКолонки( ) ;
КонецПроцедуры
Категория:
Работа с Microsoft Office и OpenOffice Копирование данных из одного созданного экселя в другой и открытие excel (с сохранением форматов) Копирование данных из одного созданного экселя в другой и открытие excel (с сохранением шрифта, рамки положения текста) и с созданием закладки на которую как раз копируются данные:
Код 1C v 8.х
Процедура КопируемЕксел()
ДокExcel = Новый COMОбъект( "Excel.Application" ) ;
ДокExcel. Application. Workbooks. Application. Workbooks. Open( "d:\temp\file.xls" ) ;
ДокExcel. Application. Workbooks. Application. ActiveSheet. Name = "Отчет Общий" ;
ДокExcel. Application. Workbooks. Application. ActiveWorkbook. Worksheets. Add( ) ;
ДокExcel. ActiveWorkbook. Sheets. Application. ActiveSheet. Name = "Отчет Региональный" ;
xlLastCell = 11 ;
Попытка
Excel = Новый COMОбъект( "Excel.Application" ) ;
Excel. WorkBooks. Open( "d:\temp\Региональный.xls" ) ;
Состояние( "Обработка файла Microsoft Excel..." ) ;
ExcelЛист = Excel. Sheets( 1 ) ;
Исключение
Сообщить( "Ошибка. Возможно неверно указан номер листа книги Excel." ) ;
КонецПопытки ;
ActiveCell = Excel. ActiveCell. SpecialCells( xlLastCell) ;
RowCount = ActiveCell. Row;
ColumnCount = ActiveCell. Column;
Для Column = 1 По ColumnCount Цикл
ДокExcel. Columns( Column) . ColumnWidth = ExcelЛист. Columns( Column) . ColumnWidth;
КонецЦикла ;
Для Row = 1 По RowCount Цикл
Для Column = 1 По ColumnCount Цикл
ДокExcel. Cells( Row, Column) . Value = ExcelЛист. Cells( Row, Column) . Value;
ДокExcel. Cells( Row, Column) . Font. Size = ExcelЛист. Cells( Row, Column) . Font. Size;
ДокExcel. Cells( Row, Column) . Font. Bold = ExcelЛист. Cells( Row, Column) . Font. Bold;
ДокExcel. Range( ExcelЛист. Cells( Row, Column) . MergeArea. Address) . Select( ) ;
ДокExcel. Selection. Merge( ) ;
ДокExcel. Range( ExcelЛист. Cells( Row, Column) . MergeArea. Address) . Borders. LineStyle = ExcelЛист. Cells( Row, Column) . MergeArea. Borders. LineStyle;
ДокExcel. Range( ДокExcel. Cells( Row, Column) , ДокExcel. Cells( Row, Column) ) . Borders. LineStyle = ExcelЛист. Cells( Row, Column) . MergeArea. Borders. LineStyle;
ДокExcel. Range( ДокExcel. Cells( Row, Column) , ДокExcel. Cells( Row, Column) ) . WrapText = Истина ;
ДокExcel. Range( ДокExcel. Cells( Row, Column) , ДокExcel. Cells( Row, Column) ) . VerticalAlignment = - 4108 ;
ДокExcel. Range( ДокExcel. Cells( Row, Column) , ДокExcel. Cells( Row, Column) ) . HorizontalAlignment = - 4108 ;
КонецЦикла ;
КонецЦикла ;
Excel. WorkBooks. Close( ) ;
Excel = 0 ;
ДокExcel. Visible= 1 ;
КонецПроцедуры
Категория:
Работа с Microsoft Office и OpenOffice