Текущий архив: 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.47 MB
Время: 0.009 c