Форум: "Corba";
Текущий архив: 2006.09.17;
Скачать: [xml.tar.bz2];
Внизпочему не работает пример Найти похожие ветки
← →
ищущий ответ (2005-08-07 13:45) [0]На сайте ИСХОДНИКИ.ru нашел пример:
На форме находится TStringGrid, заполненный некоторыми данными и две кнопки, с названиями To Excel и From Excel. Так же на форме находится компонент TExcelApplication со свойством Name, содержащим XLApp и свойством ConnectKind, содержащим ckNewInstance.
Когда нам необходимо работать с Excel, то обычно мы открываем ExcelApplication, затем открываем WorkBook и в конце используем WorkSheet.
Итак, несомненный интерес представляет для нас листы (WorkSheets) в книге (WorkBook). Давайте посмотрим как всё это работает.
Посылка данных в Excel
Это можно сделать с помощью следующей процедуры :procedure TForm1.BitBtnToExcelOnClick(Sender: TObject);
var
WorkBk : _WorkBook; // определяем WorkBook
WorkSheet : _WorkSheet; // определяем WorkSheet
I, J, K, R, C : Integer;
IIndex : OleVariant;
TabGrid : Variant;
begin
if GenericStringGrid.Cells[0,1] <> "" then
begin
IIndex := 1;
R := GenericStringGrid.RowCount;
C := GenericStringGrid.ColCount;
// Создаём массив-матрицу
TabGrid := VarArrayCreate([0,(R - 1),0,(C - 1)],VarOleStr);
I := 0;
// Определяем цикл для заполнения массива-матрицы
repeat
for J := 0 to (C - 1) do
TabGrid[I,J] := GenericStringGrid.Cells[J,I];
Inc(I,1);
until
I > (R - 1);
// Соединяемся с сервером TExcelApplication
XLApp.Connect;
// Добавляем WorkBooks в ExcelApplication
XLApp.WorkBooks.Add(xlWBatWorkSheet,0);
// Выбираем первую WorkBook
WorkBk := XLApp.WorkBooks.Item[IIndex];
// Определяем первый WorkSheet
WorkSheet := WorkBk.WorkSheets.Get_Item(1) as _WorkSheet;
// Сопоставляем Delphi массив-матрицу с матрицей в WorkSheet
Worksheet.Range["A1",Worksheet.Cells.Item[R,C]].Value := TabGrid;
// Заполняем свойства WorkSheet
WorkSheet.Name := "Customers";
Worksheet.Columns.Font.Bold := True;
Worksheet.Columns.HorizontalAlignment := xlRight;
WorkSheet.Columns.ColumnWidth := 14;
// Заполняем всю первую колонку
WorkSheet.Range["A" + IntToStr(1),"A" + IntToStr(R)].Font.Color := clBlue;
WorkSheet.Range["A" + IntToStr(1),"A" + IntToStr(R)].HorizontalAlignment := xlHAlignLeft;
WorkSheet.Range["A" + IntToStr(1),"A" + IntToStr(R)].ColumnWidth := 31;
// Показываем Excel
XLApp.Visible[0] := True;
// Разрываем связь с сервером
XLApp.Disconnect;
// Unassign the Delphi Variant Matrix
TabGrid := Unassigned;
end;
end;
на строкеWorksheet.Range["A1",Worksheet.Cells.Item[R,C]].Value := TabGrid;
вылетает ошибка. Почему?
← →
k2 © (2005-08-08 09:12) [1]скопировала пример - все работает (правда D5/office2003, но не думаю што из-за дельфи). Ошибка как выглядит?
← →
dmitry501 © (2005-08-08 12:07) [2]Стиль ссылок R1C1?
← →
ищущий ответ (2005-08-08 13:26) [3]А на Д-7 работать не хочет. Как переделать?
← →
k2 © (2005-08-09 03:55) [4]переделать легко, сначала надо понять в чем ошибка :)
замени свое на
Worksheet.Range["A1",Worksheet.Cells.Item[R,C]].Value2 := TabGrid;
Страницы: 1 вся ветка
Форум: "Corba";
Текущий архив: 2006.09.17;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.054 c