Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2006.09.17;
Скачать: CL | DM;

Вниз

почему не работает пример   Найти похожие ветки 

 
ищущий ответ   (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 вся ветка

Текущий архив: 2006.09.17;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.03 c
5-1139504418
max1000
2006-02-09 20:00
2006.09.17
Не стандартная TPanel


1-1155102207
vamp_avp
2006-08-09 09:43
2006.09.17
Эмуляция нажатия клавиш в чужом неактивном окне.


4-1147882094
ChainikDenis
2006-05-17 20:08
2006.09.17
Опять принтер на RS232...


15-1156321969
_RusLAN
2006-08-23 12:32
2006.09.17
Help&amp;Manual. Руские буквы в PDF


2-1156506003
Alral
2006-08-25 15:40
2006.09.17
Разбитие строки.