HelpF.pro

Копирование данных из одного созданного экселя в другой и открытие excel (с сохранением форматов)

Копирование данных из одного созданного экселя в другой и открытие excel (с сохранением шрифта, рамки положения текста) и с созданием закладки на которую как раз копируются данные:
Код 1C v 8.х
 // Данный код создает эксель, с одним листом и открывает в нем файл
	// далее тут же создается второй лист с нужным нам наименованием
	// и в созданный второй лист копируем данные из другого экселя, с сохранением всех атрибутов текста
	
Процедура КопируемЕксел()	
	ДокExcel = Новый COMОбъект("Excel.Application");
	
	// этот кусок отвечает за создание чистого листа
	//ДокExcel.Application.Workbooks.Application.Workbooks.Add(1);
	//ДокExcel.Application.Workbooks.Application.ActiveSheet.Application.Workbooks.Open("d:\temp\file.xls");
	
	// а здесь мы просто открываем любой указанный файл
	Док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Лист.Cells(Row,Column).VerticalAlignment;
			ДокExcel.Range(ДокExcel.Cells(Row,Column), ДокExcel.Cells(Row,Column)).HorizontalAlignment = - 4108; // Выравнивание по горизонтали по центру
			
		КонецЦикла;
	КонецЦикла;
	
	Excel.WorkBooks.Close();
	Excel = 0;
	ДокExcel.Visible=1; //Делаем Ексель видимым
	
	// Дополнительные параметры
	//Exel.WorkBooks(1).WorkSheets(1).Cells(1,1).Interior.ColorIndex=1;    //1= белый  фон
	//Exel.WorkBooks(1).WorkSheets(1).Cells(1,1).Font.ColorIndex=2;   //2= черный цвет шрифта
	//Exel.WorkBooks(1).WorkSheets(1).Cells(1,1).Font.Name= "Courier";   // указывает какой шрифт
	//Exel.WorkBooks(1).WorkSheets(1).Cells(1,1).Font.Size=12;     //размер шрифта
	//Exel.WorkBooks(1).WorkSheets(1).Cells(1,1).Font.Bold=1; либо (0); //т.е. истина либо лож - ?(обычный, жирный)
	//Exel.WorkBooks(1).WorkSheets(1).Cells(1,1).InsertIndent(2); //устанавливаем отступ (в данном случае на 2 символа)
	//Exel.WorkBooks(1).WorkSheets(1).Cells(1,1).ColumnWidth= 10;   // ширина колонки
	//Exel.WorkBooks(1).WorkSheets(1).Cells(1,1).Borders(5).LineStyle = -4142;   //очищаем все границы
	//Exel.WorkBooks(1).WorkSheets(1).Cells(1,1).Borders(7).LineStyle=1;   //добавили левую границу (7 - левая, 8 - верхняя, 9 - нижняя, 10 - правая )
	//Exel.WorkBooks(1).WorkSheets(1).Cells(1,1).VerticalAlignment = -4160; //выравнивание по левому краю
	//Exel.WorkBooks(1).WorkSheets(1).Cells(1,1).WrapText=1 (истина)   //устанавливаем перенос слов
	
	//Всего 56 цветов:
	//1- белый
	//2-черный
	//3-красный
	//5-синий
	//6-желтый
	//7-лиловый
	//10-зеленый
	//33-голубой
	//39-сиреневый
	//46-оранжевый
	
	//адрес ячейки:
	//.Address
	
	//Прямоугольная область ячеек:
	//Exel.WorkBooks(1).WorkSheets(2).Range("a1:b2");
	//Exel.WorkBooks(1).WorkSheets(2).Range("a1:b2").Copy();
	//Exel.WorkBooks(1).WorkSheets(2).Range("a11:b12").Select();
	//Exel.WorkBooks(1).WorkSheets(2).Paste();

	
	//Про Диаграммы:

	//Два варианта: 1-й если Диаграмма будет распологаться непосредственно на листе с данными, 2-й на отдельном листе.
	
	//Если Диаграмма распологается на листе с данными:
	//в скобках параметры определения левого верхнего угла и размеры.
	
	//Chart = Excel.WorkBooks(1).WorkSheets(2).ChartObjects.Add(,,,);
	
	//Если все же на отдельном листе, то добавим Sheets наш элемент: *(СОДЕРЖИТ ЛИСТЫ ВСЕХ ТИПОВ)*
		
	//Excel.WorkBooks(1).Sheets.Add(,,1,-4109);
	//где:Add(ПЕРВЫЙ,ВТОРОЙ,1,-4109);
	//ПЕРВЫЙ- номер листа, перед которым будет НАШ лист;
	//ВТОРОЙ-номер листа, после которого будет НАШ лист;
	//1- количество создоваемых листов;
	//-4109 - рабочий лист ( -4109 = с диаграммой, -4167 = лист с данными)

КонецПроцедуры   

Опубликовано на сайте: https://HelpF.pro
Прямая ссылка: https://HelpF.pro/faq/view/330.html