Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Проблема с Excel'ем / 9 сообщений из 9, страница 1 из 1
29.04.2003, 10:47
    #32150693
Sem H
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с Excel'ем
Кусок кода:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
var
    FIXLSApp: Excel2000.TExcelApplication;
    IWorkbook: Excel2000.ExcelWorkbook;
    WorkSheet: Excel2000.ExcelWorksheet;

begin
  if not Assigned(IXLSApp) then begin
    FIXLSApp := Excel2000.TExcelApplication.Create(Self);
    if NewInstance then FIXLSApp.ConnectKind := ckNewInstance;
    FIXLSApp.Connect;
  end;

 IWorkbook := FIXLSApp.Workbooks.Add('c:\111.xls',  0 );
 IWorkbook.SaveAs('c:\222.xls', EmptyParam, EmptyParam, EmptyParam,
                  EmptyParam, EmptyParam, EmptyParam, EmptyParam,
                  EmptyParam, EmptyParam, EmptyParam,  0 );

.......



После вызова "SaveAs" вылетает ошибка:
........ raised exception class EVariantError with message 'Invalid variant type conversion' ....

Вопрос: как избавиться от нее ?..
...
Рейтинг: 0 / 0
29.04.2003, 11:09
    #32150722
Papka
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с Excel'ем
Ja delel tak:
_Doc.SaveAs('DocName', EmptyParam, EmptyParam, EmptyParam, EmptyParam,
EmptyParam, EmptyParam, EmptyParam, EmptyParam, EmptyParam, EmptyParam);
...
Рейтинг: 0 / 0
29.04.2003, 11:11
    #32150727
LG
LG
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с Excel'ем
>>EmptyParam, EmptyParam, EmptyParam, EmptyParam, EmptyParam, EmptyParam, EmptyParam, EmptyParam, EmptyParam, EmptyParam, 0

Ошибка при попытке преобразовать EmptyParam или 0 к типу OleVariant. Вроде так ...
...
Рейтинг: 0 / 0
29.04.2003, 11:12
    #32150729
Papka
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с Excel'ем
Parvda ja connectilsa k Excel cherez CreateOleObject
...
Рейтинг: 0 / 0
29.04.2003, 15:05
    #32151030
Sem H
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с Excel'ем
через Ole Object'ы вообще не обязательно указывать эти EmptyParam.

а вот что здесь надо указать ?..

я уже задолбался млин.. описания нормального нет, хер найдешь.. :(
подскажите плз ... !..
...
Рейтинг: 0 / 0
29.04.2003, 16:45
    #32151158
-=Extreme=-ShamaN
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с Excel'ем
Код: plaintext
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.
122.
123.
124.
125.
126.
127.
128.
129.
130.
131.
132.
133.
134.
135.
136.
137.
138.
139.
140.
141.
142.
procedure WriteToXLS(XLSFileName: OleVariant; ArrayData: Variant);
var
 XLApp: TExcelApplication;
 XLWbk: TExcelWorkbook;
{ TemplateFile, }NewTemplate: OleVariant;

 Range, Cell1, Cell2: Variant;
 BeginCol, BeginRow, EndCol, EndRow: integer;

// Параметры сохранения .xls-файла
 XLSaveParams: TXLSaveParams;
begin
 XLApp := TExcelApplication.Create(nil);
 XLWbk := TExcelWorkBook.Create(nil);
 try
   XLApp.DisplayAlerts[ 0 ] := False;
   XLApp.ConnectKind := ckNewInstance;
   XLApp.Application.EnableEvents := false;

   XLApp.Connect;
   NewTemplate := true;
//   TemplateFile := FileName;
   XLApp.Workbooks.Add(EmptyParam,NewTemplate);
   XLWbk.ConnectTo(XLApp.ActiveWorkBook);

// Размеры выводимого массива данных
  // Координаты левого верхнего угла области, в которую будем выводить данные
  BeginRow := VarArrayLowBound(ArrayData,  1 );
  BeginCol := VarArrayLowBound(ArrayData,  2 );

  // Координаты правого нижнего угла области, в которую будем выводить данные
  EndRow := VarArrayHighBound(ArrayData,  1 );
  EndCol := VarArrayHighBound(ArrayData,  2 );

  // Левая верхняя ячейка области, в которую будем выводить данные
  Cell1 := (XLWbk.Worksheets[ 1 ] as _Worksheet).Cells.Item[BeginRow, BeginCol];
  // Правая нижняя ячейка области, в которую будем выводить данные
  Cell2 := (XLWbk.Worksheets[ 1 ] as _Worksheet).Cells.Item[EndRow, EndCol];

  // Область, в которую будем выводить данные
  Range := (XLWbk.Worksheets[ 1 ] as _Worksheet).Range[Cell1, Cell2];

(*
//Создаем вариантный массив
TabGrid:=VarArrayCreate([ 1 ,RowCount, 1 ,ColCount],varVariant);
....

//Ориентация страницы
WorkSheet.PageSetup.Orientation:= 2 ;
WorkSheet.PageSetup.LeftMargin:= 4 ;
WorkSheet.PageSetup.RightMargin:= 4 ;

//Размер ячейки (блока ячеек)
WorkSheet.Range['L'+IntToStr(CurrLine),'L'+IntToStr(CurrLine)].Font.Size:= 8 ;


//Стиль шрифта
WorkSheet.Range['L'+IntToStr(CurrLine),'L'+IntToStr(CurrLine)].Font.Bold:=False;

WorkSheet.Range['L'+IntToStr(CurrLine),'L'+IntToStr(CurrLine)].Font.Italic:=False;

//Выравнивание по горизонтали
WorkSheet.Range['L'+IntToStr(CurrLine),'L'+IntToStr(CurrLine)].HorizontalAlignment:=xlHAlignRight;

//Выравнивание по вертикали
WorkSheet.Range['L'+IntToStr(CurrLine),'L'+IntToStr(CurrLine)].VerticalAlignment:=xlVAlignTop;


//Формат данных в ячейке
WorkSheet.Range['L'+IntToStr(CurrLine),'L'+IntToStr(CurrLine)].NumberFormat:='# ##0,00';


//Стиль границы
WorkSheet.Range['L'+IntToStr(CurrLine),'L'+IntToStr(CurrLine)].Borders.LineStyle:=xlSolid;


//Пример объединения ячеек
WorkSheet.Range['A'+IntToStr(CurrLine),'N'+IntToStr(CurrLine)].Font.Size:= 12 ;
WorkSheet.Range['A'+IntToStr(CurrLine),'N'+IntToStr(CurrLine)].Font.Bold:=True;
WorkSheet.Range['A'+IntToStr(CurrLine),'N'+IntToStr(CurrLine)].HorizontalAlignment:=xlHAlignCenter;
WorkSheet.Range['A'+IntToStr(CurrLine),'N'+IntToStr(CurrLine)].VerticalAlignment:=xlVAlignTop;
WorkSheet.Range['A'+IntToStr(CurrLine),'N'+IntToStr(CurrLine)].WrapText:=True;
WorkSheet.Range['A'+IntToStr(CurrLine),'N'+IntToStr(CurrLine)].RowHeight:= 12 ;
WorkSheet.Range['A'+IntToStr(CurrLine),'N'+IntToStr(CurrLine)].RowHeight:= 25 ;
WorkSheet.Range['A'+IntToStr(CurrLine),'N'+IntToStr(CurrLine)].Merge(True);

//Связываем массив с сеткой Excel
  Worksheet.Range['A1',Worksheet.Cells.Item[RowCount,ColCount]].Value := TabGrid;

// Отображаем Excel
XLApp.Visible[ 0 ] := True;

//Ликвидируем вариантный массив
XLApp.Disconnect;
TabGrid := Unassigned;
*)

  // А вот и сам вывод данных
  // Намного быстрее поячеечного присвоения
  Range.Value := ArrayData;

// Делаем Excel видимым
//  XLApp.Visible[ 0 ] := true;

// Записываем рабочую книгу в .xls-файл

  with XLSaveParams do
    begin

     if XLSFileName = Null then
        FileName := ExtractFilePath(Application.EXEName) + 'report.xls'
     else
        FileName := XLSFileName;

     FileFormat := xlExcel9795;
     Password := '';  { Length(Password) <=  15  }
     WriteResPassword := '';
     ReadOnlyRecommended := False;
     CreateBackup := False;
     AccessMode := xlExclusive;
     ConflictResolution := xlLocalSessionChanges;
     AddToMru := False;
     TextCodepage := EmptyParam;
     TextVisualLayout := EmptyParam;
     Local := False;

     XLWbk.SaveAs(FileName, FileFormat, Password, WriteResPassword, ReadOnlyRecommended, CreateBackup,
                  AccessMode, ConflictResolution, AddToMru, TextCodepage, TextVisualLayout, Local);
    end; { with }
  XLWbk.Close;
  XLWbk.Disconnect;
  XLApp.Disconnect;
  XLApp.Quit;
 finally
   if Assigned(XLApp) then
     begin
      XLApp.DisplayAlerts[ 0 ] := True;
     end;
   FreeAndNil(XLWbk);
   FreeAndNil(XLApp);
 end;
end;
...
Рейтинг: 0 / 0
30.04.2003, 02:40
    #32151418
Sem H
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с Excel'ем
Ок, спасибо..
...
Рейтинг: 0 / 0
30.04.2003, 02:44
    #32151419
Sem H
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с Excel'ем
Вопрос: где взять TXLSaveParams ? ..
...
Рейтинг: 0 / 0
03.05.2003, 11:24
    #32152666
balbes
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с Excel'ем
HI Sem H

Вот глянь может поможет....
...
Рейтинг: 0 / 0
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Проблема с Excel'ем / 9 сообщений из 9, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]