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

Код: 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
Проблема с Excel'ем
    #32150722
Papka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ja delel tak:
_Doc.SaveAs('DocName', EmptyParam, EmptyParam, EmptyParam, EmptyParam,
EmptyParam, EmptyParam, EmptyParam, EmptyParam, EmptyParam, EmptyParam);
...
Рейтинг: 0 / 0
Проблема с Excel'ем
    #32150727
LG
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>>EmptyParam, EmptyParam, EmptyParam, EmptyParam, EmptyParam, EmptyParam, EmptyParam, EmptyParam, EmptyParam, EmptyParam, 0

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

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

я уже задолбался млин.. описания нормального нет, хер найдешь.. :(
подскажите плз ... !..
...
Рейтинг: 0 / 0
Проблема с Excel'ем
    #32151158
-=Extreme=-ShamaN
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Код: 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
Проблема с Excel'ем
    #32151418
Sem H
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ок, спасибо..
...
Рейтинг: 0 / 0
Проблема с Excel'ем
    #32151419
Sem H
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вопрос: где взять TXLSaveParams ? ..
...
Рейтинг: 0 / 0
Проблема с Excel'ем
    #32152666
balbes
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
HI Sem H

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


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