Копирование данных из одного созданного экселя в другой и открытие excel (с сохранением шрифта, рамки положения текста) и с созданием закладки на которую как раз копируются данные:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 |
// Данный код создает эксель, с одним листом и открывает в нем файл // далее тут же создается второй лист с нужным нам наименованием // и в созданный второй лист копируем данные из другого экселя, с сохранением всех атрибутов текста Процедура КопируемЕксел() Док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 = лист с данными) КонецПроцедуры |