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

Вниз

Нет коннекта к Excel   Найти похожие ветки 

 
dataMaster ©   (2003-07-18 09:22) [0]

Всем привет! Может кто поделится соображениями? Имеется код, который был взят из FAQ:

XLApp - это ExcelApplication.
Свойство ConnectKind установлено в ckNewInstance, а AutoConnect и AutoQuit установлены в False.

GenericStringGrid - это StringGrid.



var
WorkBk : _WorkBook;
WorkSheet : _WorkSheet;
K, R, X, Y : Integer;
IIndex : OleVariant;
RangeMatrix : Variant;
NomFich : WideString;
begin
NomFich := ExtractFilePath(ParamStr(0))+"File.xls";
IIndex := 1;
XLApp.Connect;
// Открываем файл Excel
XLApp.WorkBooks.Open(NomFich,EmptyParam,EmptyParam,EmptyParam,EmptyParam, EmptyParam,EmptyParam,EmptyParam,EmptyParam,EmptyParam,EmptyParam,
EmptyParam,EmptyParam,0);
WorkBk := XLApp.WorkBooks.Item[IIndex];
WorkSheet := WorkBk.WorkSheets.Get_Item(1) as _WorkSheet;
// Чтобы знать размер листа (WorkSheet), т.е. количество строк и количество
// столбцов, мы активируем его последнюю непустую ячейку
WorkSheet.Cells.SpecialCells(xlCellTypeLastCell, EmptyParam).Activate;
// Получаем значение последней строки
X := XLApp.ActiveCell.Row;
// Получаем значение последней колонки
Y := XLApp.ActiveCell.Column+1;
// Определяем количество колонок в TStringGrid
GenericStringGrid.ColCount := Y;
// Сопоставляем матрицу WorkSheet с нашей Delphi матрицей
RangeMatrix := XLApp.Range["A1",XLApp.Cells.Item[X,Y]].Value;
// Выходим из Excel и отсоединяемся от сервера
XLApp.Quit;
XLApp.Disconnect;

// Определяем цикл для заполнения TStringGrid
for k:=1 to X do
for R := 1 to Y do
begin
GenericStringGrid.Cells[R, K] := RangeMatrix[K, R];
GenericStringGrid.RowCount := K + 1;
end;

// Unassign the Delphi Variant Matrix
RangeMatrix := Unassigned;
end;


А проблема вот в чем. В Windows 98 все работает нормально, а в Windows 2000 в строке XLApp.Connect; выдает ошибку "Interface not supported". Объясните, пожалуйста, почему?


 
MacroDenS ©   (2003-07-18 10:21) [1]

Просто в юзесах надо еще прописать Excel2000


 
dataMaster ©   (2003-07-18 10:25) [2]

Прописывал, не помогло


 
AME   (2003-07-18 10:32) [3]

Win 2000
Microsoft Excel 97 SR-2
Код работает!
Смотри для какого Excel компилировал!(97 или 2000)


 
dataMaster ©   (2003-07-18 10:39) [4]

Компилировал для Excel 2000


 
AME   (2003-07-18 10:42) [5]

У меня в uses Excel97
И на машине Excel 97!


 
AME   (2003-07-18 10:46) [6]

Простым прописыванием Excel2000 проблему не решить!
Тип Excel выбирается при инсталляции Delphi.


 
dataMaster ©   (2003-07-18 10:47) [7]

У меня в uses"ах и Excel97 и Excel2000 прописаны. При установке Delphi была выбрана опция Microsoft Office 97. Я думаю, может в этом причина? Хотя, почитал статьи, там рекомендуют ставить 97, если не знаешь, с каким Excel будешь работать. Меня волнует то, почему этот код на Win98 работает без проблем, а на Win2000 нет?


 
AME   (2003-07-18 11:02) [8]

>У меня в uses"ах и Excel97 и Excel2000 прописаны.
Я думаю будет Excel97 для компиляции использован.
А в Excel97 и Excel2000 COM интерфейс разные(я так думаю).
И думаю Win тут не при чем!
А на Win98 и Win2000 Excel одинаковый?


 
dataMaster ©   (2003-07-18 11:05) [9]

>А на Win98 и Win2000 Excel одинаковый?

Да. И набор его инструментов тоже.


 
AME   (2003-07-18 11:14) [10]

Тады не знаю :(
P.S. Сравни еще версии IE(кто его знает....)


 
dataMaster ©   (2003-07-18 11:24) [11]

Тогда у меня возникает сразу вопрос: а как IE может повлиять на Excel?


 
AME   (2003-07-18 11:37) [12]

Разная реализация компонентов в DLL,
которые оба используют.Эти связи только MS знает Ж:O

А как может влиять на Borland Database Engine?
А ведь влияет!!
На WinNT пришлось ставить IE 5.5, только тогда заработало.


 
dataMaster ©   (2003-07-18 11:50) [13]

Честно признаться, звучит более чем убедительно. Буду пробовать.



Страницы: 1 вся ветка

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

Наверх




Память: 0.49 MB
Время: 0.019 c
1-100785
Beginner3000
2003-07-16 00:46
2003.07.31
Модули


1-100816
@Ujin
2003-07-17 15:12
2003.07.31
В чем разница? : M2 := TMemo(M1) и M2 := (M1 as TMemo)?


8-100832
SDS
2003-02-28 16:39
2003.07.31
Как создать TMetafileCanvas


3-100568
62mkv
2003-07-08 13:12
2003.07.31
BDE 5.2


1-100682
Альф
2003-07-18 10:36
2003.07.31
Привет :) Маленький вопрос по FastReport 2.4