helpf.pro
Регистрация
 +2 
Распечатать

Копирование данных из одного созданного экселя в другой и открытие 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 = лист с данными)

КонецПроцедуры   
Разместил:   Версии: | 8.x |  Дата:   Прочитано: 29524
 +2 
Распечатать
Возможно, вас также заинтересует
Excel файл как Внешний источник данных 17
Подключимся и загрузим из файла Excel данные в таблицу значений 1С. Сделать теперь это очень просто. 1. В конфигурации добавляет новый объект метаданных типа " Внешние источники данных" и назовем его просто " Excel" . https://helpf.pro/uploads/img
Активация открытой книги Excel для корректировки 0
Нужно было получить для изменения уже открытую книгу Excel, а если она закрыта, то открыть и изменять. Ниже код, который данную задачу решает. Попытка Эксель = Неопределено; Книга = Неопределено; Лист = Неопределено; Состояние(" Выполняется
Быстрая выгрузка отчетов в Excel, наложение Фильта и отображение ярлыка 0
Вместо Таб.Показать() используем глобальную функцию - и отчет показывается сразу в Excel в удобоваримом виде - с форматированием колонок по ширине, автофильтром и ярлычками листов Процедура глОткрытьВЭкселе(Таб,ИмяФайла=" " ,НеИзменятьВысотуСтроки=0
Быстрая загрузка данных большого размера файла Excel в многомерный Массив 0
// OldthiefXXX Перем СерверExcel; Процедура КнопкаВыполнитьНажатие(Кнопка) ФайлХЛС=СерверExcel.Application.Workbooks.Open(ДокументХЛС); КонечнаяСтрокаДанных=ФайлХЛС.ActiveSheet.UsedRange.Rows.Count; КоличествоКолонокДанных=ФайлХЛС.ActiveSheet
Быстрая функция чтения данных с листа Excel 11
При чтении файла Excel я использую вариантный массив. Он позволяет быстро получить ВСЮ таблицу листа в память, а также получать данные массива целыми колонками. Тем самым время на чтение области файла Excel в таблицу значений сокращается в десятки ра
Посмотреть все результаты поиска похожих
Комментарии
escritor
30.09.2009 17:07Комментарий: 3
escritor
*17, спасибо, так действительно удобнее
E_Migachev
30.09.2009 15:51Комментарий: 2
E_Migachev
Natali, для просмотра таких больших кодов, советую использовать вывод на печать (Кнопка справа - Распечатать)
escritor
30.09.2009 14:57Комментарий: 1
escritor
Код длинный, и по вертикали и по горизонтали, получается не очень удобно просматривать *09
Вы не можете отправить комментарий анонимно, пожалуйста войдите или зарегистрируйтесь.
Загрузка... Дождитесь завершения!