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

Вниз

Проблема создания excel документа...   Найти похожие ветки 

 
Vyacheslav ©   (2004-12-21 12:49) [0]

Есть не хитроумная проседурра в которой созд 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 13:52) [1]

Range лучше задавать в строковом виде.


 
Sash ©   (2004-12-21 14:04) [2]

типа вот так
Range["IR1,IR2"]


 
palva ©   (2004-12-21 14:34) [3]

Очень нестандартный код. Если писали не вы, то лучше переписать стандартно. Если писали вы, то лучше ознакомиться со стандартными примерами, и от них уже танцевать. Если процедура, как вы пишете, не хитроумная, то не стоит так хитро ее реализовывать.


 
Palladin ©   (2004-12-21 18:17) [4]


> [2] Sash ©   (21.12.04 14:04)

Чиста конкретна так


 
Palladin ©   (2004-12-21 18:18) [5]

Стоп. Не так.
Range["A1","B2"]



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

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

Наверх




Память: 0.48 MB
Время: 0.048 c
14-1103283310
Koala
2004-12-17 14:35
2005.01.09
Какой DVD плеер посоветуете


1-1103618080
paule
2004-12-21 11:34
2005.01.09
Проблема с переменной


14-1103059560
SWET
2004-12-15 00:26
2005.01.09
Деньги


14-1103058925
Pat
2004-12-15 00:15
2005.01.09
ООП vs структурное программирование


3-1102490625
LEH
2004-12-08 10:23
2005.01.09
Как лучше переносить BDE