![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Проблема создания excel документа... [D7, Win2k]
Vyacheslav © (2004-12-21 12:49:00)Есть не хитроумная проседурра в которой созд excel документ и заполняеться данными и базы.... так вот в Delphi7 (D 6 нормально)
все строки в нутри проседуры начиающиеся на
ExcelWorksheet1.Range выдают ощибку
....exception class EOleException whit message 'Ole error 800A03EC'.... В чем проблема ?
begin
try
screen.Cursor:=crHourGlass;
application.ProcessMessages;
ExcelApplication1:=TExcelApplication.Create(nil);
ExcelWorkbook1:=tExcelWorkbook.Create(nil);
ExcelWorksheet1:=TExcelWorksheet.Create(nil);
ExcelApplication1.ConnectKind:=ckNewinstance;
ExcelApplication1.Connect;
ExcelWorkbook1.ConnectTo(ExcelApplication1.Workbooks. Add(emptyparam,0));
ExcelApplication1.ActiveWorkbook.ActiveSheet;
ExcelWorksheet1.ConnectTo(ExcelApplication1.ActiveWorkbook.Worksheets[1] as Excel2000.ExcelWorksheet);
IDispatch(IR1) := ExcelWorksheet1.Cells.Item[1,1];
IDispatch(IR2) := ExcelWorksheet1.Cells.Item[65535,1];
ExcelWorksheet1.Range[IR1, IR2].ColumnWidth:=30;
ExcelWorksheet1.Cells.Item[1,1]:='Workers'' time-board from '+datetostr(date1)+' to '+datetostr(date2);
adq:=TADOQuery.Create(nil);
adq.Connection:=form1.ADOConnection1;
adq.SQL.Clear;
adq.SQL.Add('select * from qallemployers');
adq.Active:=TRUE;
ExcelWorksheet1.Cells.Item[2,1]:='Workers';
ExcelWorksheet1.Cells.Item[3,1]:='';
IDispatch(IR1) := ExcelWorksheet1.Cells.Item[2,1];
IDispatch(IR2) := ExcelWorksheet1.Cells.Item[4,1];
ExcelWorksheet1.Range[IR1,IR2].Merge(false);
ExcelWorksheet1.Range[IR1,IR2].VerticalAlignment:=2;
ExcelWorksheet1.Range[IR1,IR2].HorizontalAlignment:=3;
ExcelWorksheet1.Range[IR1,IR2].Font.Bold:=true;
days:=daysbetween(date1,date2);
IDispatch(IR1) := ExcelWorksheet1.Cells.Item[1,1];
IDispatch(IR2) := ExcelWorksheet1.Cells.Item[1,(days+1)*5+1];
ExcelWorksheet1.Range[IR1,IR2].Merge(false);
ExcelWorksheet1.Range[IR1,IR2].VerticalAlignment:=2;
ExcelWorksheet1.Range[IR1,IR2].HorizontalAlignment:=3;
ExcelWorksheet1.Range[IR1,IR2].Font.Bold:=true;
IDispatch(IR1) := ExcelWorksheet1.Cells.Item[1,1];
IDispatch(IR2) := ExcelWorksheet1.Cells.Item[1,255];
ExcelWorksheet1.Range[IR1,IR2].RowHeight:=40;
IDispatch(IR1) := ExcelWorksheet1.Cells.Item[1,2];
IDispatch(IR2) := ExcelWorksheet1.Cells.Item[65535,(days+1)*5+1];
ExcelWorksheet1.Range[IR1,IR2].ColumnWidth:=7;
IDispatch(IR1) := ExcelWorksheet1.Cells.Item[2,2];
IDispatch(IR2) := ExcelWorksheet1.Cells.Item[2,(days+1)*5+1];
ExcelWorksheet1.Range[IR1,IR2].Merge(false);
ExcelWorksheet1.Range[IR1,IR2].VerticalAlignment:=2;
ExcelWorksheet1.Range[IR1,IR2].HorizontalAlignment:=3;
ExcelWorksheet1.Range[IR1,IR2].Font.Bold:=true;
ExcelWorksheet1.Cells.Item[2,2]:='Days';
и т.д..
Palladin (2004-12-21 18:18:00) [1]Стоп. Не так.
Range['A1 ','B2']
Palladin (2004-12-21 18:17:00) [2]
> [2] Sash © (21.12.04 14:04)
Чиста конкретна так
palva (2004-12-21 14:34:00) [3]Очень нестандартный код. Если писали не вы, то лучше переписать стандартно. Если писали вы, то лучше ознакомиться со стандартными примерами, и от них уже танцевать. Если процедура, как вы пишете, не хитроумная, то не стоит так хитро ее реализовывать.
Sash (2004-12-21 14:04:00) [4]типа вот так
Range['IR1,IR2']
Palladin (2004-12-21 13:52:00) [5]Range лучше задавать в строковом виде.