大家帮帮忙,看看是为什么呀

catac 2009-03-09 07:18:42
我在想在动态库里面完成写EXCEL的动做,现在不知道为什么报Invalid pointer operation.
现在是代码
uses
ShareMem,SysUtils,Classes,DBTables,Variants,ComObj;

{$R *.res}
procedure CopyDbDataToExcel(Const lQry:TQuery);
var
iCount, jCount: Integer;
XLApp: Variant;
Sheet: Variant;
Range : variant;
filename : String;
lQry1 : TQuery;
begin
lQry1 := lQry;
if not VarIsEmpty(XLApp) then
begin
XLApp.DisplayAlerts := False;
XLApp.Quit;
VarClear(XLApp);
end;
filename := 'F:\aaa.xls';
try
XLApp := CreateOleObject('Excel.Application');
except
Exit;
end;

XLApp.WorkBooks.Add;
XLApp.SheetsInNewWorkbook := 1;

XLApp.WorkBooks[1].WorkSheets[1].Name := '4443';
Sheet := XLApp.Workbooks[1].WorkSheets['4443'];
if not lQry1.Active then
begin
lQry1.Open;
Exit;
end;

lQry.first;
// for iCount := 0 to lQry.FieldCount - 1 do
// Sheet.Cells[1, iCount + 1] :=lQry. ;

jCount := 1;
try
while not lQry1.Eof do
begin
for iCount := 0 to lQry.FieldCount - 1 do
begin
Sheet.Cells[jCount + 1, iCount + 1] :=lQry1.Fields[iCount].AsString ;
if lQry1.Fields[iCount].AsString='是' then
begin
Range := Sheet.Cells[jCount + 1, iCount + 1];
Range.Interior.ColorIndex:=39;
end;
end;
Inc(jCount);
lQry1.Next;
end;
// Sheet:= unassigned;
// Range.Quit;
// Range := unassigned;
XlApp.Visible := True;
// XLApp.WorkBooks[1].saveas(filename);
// XLApp.Workbooks[1].close;
// XLApp.quit;
// XLApp:=unassigned;
// Sheet.quit;
Except
end;
end;
...全文
126 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
zshsuming 2009-03-13
  • 打赏
  • 举报
回复
跟``
yc_8301 2009-03-13
  • 打赏
  • 举报
回复
up!
kye_jufei 2009-03-10
  • 打赏
  • 举报
回复

ExcelApp.Range['A'+inttostr(4+iLoop)+':E'+inttostr(4+iLoop)].MergeCells:=True;
ExcelApp.cells[4+iLoop,1].value:='合計';

ExcelApp.range['A2:AP'+inttostr(4+iLoop)].HorizontalAlignment:=xlCenter;
ExcelApp.Range['A2:AP'+inttostr(4+iLoop)].Borders.linestyle:=xlContinuous;

ExcelApp.cells[4+iLoop,6].value:='=SUM(F4:F'+ inttostr(3+iLoop)+')';
ExcelApp.cells[4+iLoop,7].value:='=SUM(G4:G'+ inttostr(3+iLoop)+')';
ExcelApp.cells[4+iLoop,8].value:='=SUM(H4:H'+ inttostr(3+iLoop)+')';
ExcelApp.cells[4+iLoop,9].value:='=SUM(I4:I'+ inttostr(3+iLoop)+')';
ExcelApp.cells[4+iLoop,10].value:='=SUM(J4:J'+ inttostr(3+iLoop)+')';
ExcelApp.cells[4+iLoop,11].value:='=SUM(K4:K'+ inttostr(3+iLoop)+')';
ExcelApp.cells[4+iLoop,12].value:='=SUM(L4:L'+ inttostr(3+iLoop)+')';
ExcelApp.cells[4+iLoop,13].value:='=SUM(M4:M'+ inttostr(3+iLoop)+')';
ExcelApp.cells[4+iLoop,14].value:='=SUM(N4:N'+ inttostr(3+iLoop)+')';
ExcelApp.cells[4+iLoop,15].value:='=SUM(O4:O'+ inttostr(3+iLoop)+')';
ExcelApp.cells[4+iLoop,16].value:='=SUM(P4:P'+ inttostr(3+iLoop)+')';
ExcelApp.cells[4+iLoop,17].value:='=SUM(Q4:Q'+ inttostr(3+iLoop)+')';
ExcelApp.cells[4+iLoop,18].value:='=SUM(R4:R'+ inttostr(3+iLoop)+')';
ExcelApp.cells[4+iLoop,19].value:='=SUM(S4:S'+ inttostr(3+iLoop)+')';
ExcelApp.cells[4+iLoop,20].value:='=SUM(T4:T'+ inttostr(3+iLoop)+')';
ExcelApp.cells[4+iLoop,21].value:='=SUM(U4:U'+ inttostr(3+iLoop)+')';
ExcelApp.cells[4+iLoop,22].value:='=SUM(V4:V'+ inttostr(3+iLoop)+')';
ExcelApp.cells[4+iLoop,23].value:='=SUM(W4:W'+ inttostr(3+iLoop)+')';
ExcelApp.cells[4+iLoop,24].value:='=SUM(X4:X'+ inttostr(3+iLoop)+')';
ExcelApp.cells[4+iLoop,25].value:='=SUM(Y4:Y'+ inttostr(3+iLoop)+')';
ExcelApp.cells[4+iLoop,26].value:='=SUM(Z4:Z'+ inttostr(3+iLoop)+')';
ExcelApp.cells[4+iLoop,27].value:='=SUM(AA4:AA'+ inttostr(3+iLoop)+')';
ExcelApp.cells[4+iLoop,28].value:='=SUM(AB4:AB'+ inttostr(3+iLoop)+')';
ExcelApp.cells[4+iLoop,29].value:='=SUM(AC4:AC'+ inttostr(3+iLoop)+')';
ExcelApp.cells[4+iLoop,30].value:='=SUM(AD4:AD'+ inttostr(3+iLoop)+')';
ExcelApp.cells[4+iLoop,31].value:='=SUM(AE4:AE'+ inttostr(3+iLoop)+')';
ExcelApp.cells[4+iLoop,32].value:='=SUM(AF4:AF'+ inttostr(3+iLoop)+')';
ExcelApp.cells[4+iLoop,33].value:='=SUM(AG4:AG'+ inttostr(3+iLoop)+')';
ExcelApp.cells[4+iLoop,34].value:='=SUM(AH4:AH'+ inttostr(3+iLoop)+')';
ExcelApp.cells[4+iLoop,35].value:='=SUM(AI4:AI'+ inttostr(3+iLoop)+')';
ExcelApp.cells[4+iLoop,36].value:='=SUM(AJ4:AJ'+ inttostr(3+iLoop)+')';

ExcelApp.cells[4+iLoop,42].value:='=SUM(E4:AJ'+ IntToStr(3+iLoop)+')';
ProgressBar1.Position:=0;
ExcelApp.Visible:=True;
Screen.Cursor:=crDefault;
except
ExcelApp.ActiveWorkBook.Saved:=True;
ExcelApp.WorkBooks.Close;
ExcelApp.Quit;
end;
end;
kye_jufei 2009-03-10
  • 打赏
  • 举报
回复

Application.ProcessMessages;
adoq_imp.Close;
adoq_imp.SQL.Clear;
adoq_imp.SQL.Add('select m.ACCOUNT_ID,m.FULL_NAME,m.CB,m.BM,m.XB,n.* from Res_User_Temp m left join');
adoq_imp.SQL.Add('(SELECT ACCOUNT_ID,MAX(FULL_NAME)AS FULL_NAME,MAX(JBCB)AS JBCB,MAX(JBBM)AS JBBM,MAX(JBZXB)AS JBZXB,JBRQ AS JBRQ,');
adoq_imp.SQL.Add('SUM(CASE DATEPART(D,JBRQ) WHEN ''1'' THEN JBSS END)AS D1,');
adoq_imp.SQL.Add('SUM(CASE DATEPART(D,JBRQ) WHEN ''2'' THEN JBSS END)AS D2,');
adoq_imp.SQL.Add('SUM(CASE DATEPART(D,JBRQ) WHEN ''3'' THEN JBSS END)AS D3,');
adoq_imp.SQL.Add('SUM(CASE DATEPART(D,JBRQ) WHEN ''4'' THEN JBSS END)AS D4,');
adoq_imp.SQL.Add('SUM(CASE DATEPART(D,JBRQ) WHEN ''5'' THEN JBSS END)AS D5,');
adoq_imp.SQL.Add('SUM(CASE DATEPART(D,JBRQ) WHEN ''6'' THEN JBSS END)AS D6,');
adoq_imp.SQL.Add('SUM(CASE DATEPART(D,JBRQ) WHEN ''7'' THEN JBSS END)AS D7,');
adoq_imp.SQL.Add('SUM(CASE DATEPART(D,JBRQ) WHEN ''8'' THEN JBSS END)AS D8,');
adoq_imp.SQL.Add('SUM(CASE DATEPART(D,JBRQ) WHEN ''9''THEN JBSS END)AS D9,');
adoq_imp.SQL.Add('SUM(CASE DATEPART(D,JBRQ) WHEN ''10'' THEN JBSS END)AS D10,');
adoq_imp.SQL.Add('SUM(CASE DATEPART(D,JBRQ) WHEN ''11'' THEN JBSS END)AS D11,');
adoq_imp.SQL.Add('SUM(CASE DATEPART(D,JBRQ) WHEN ''12'' THEN JBSS END)AS D12,');
adoq_imp.SQL.Add('SUM(CASE DATEPART(D,JBRQ) WHEN ''13'' THEN JBSS END)AS D13,');
adoq_imp.SQL.Add('SUM(CASE DATEPART(D,JBRQ) WHEN ''14'' THEN JBSS END)AS D14,');
adoq_imp.SQL.Add('SUM(CASE DATEPART(D,JBRQ) WHEN ''15'' THEN JBSS END)AS D15,');
adoq_imp.SQL.Add('SUM(CASE DATEPART(D,JBRQ) WHEN ''16'' THEN JBSS END)AS D16,');
adoq_imp.SQL.Add('SUM(CASE DATEPART(D,JBRQ) WHEN ''17'' THEN JBSS END)AS D17,');
adoq_imp.SQL.Add('SUM(CASE DATEPART(D,JBRQ) WHEN ''18'' THEN JBSS END)AS D18,');
adoq_imp.SQL.Add('SUM(CASE DATEPART(D,JBRQ) WHEN ''19'' THEN JBSS END)AS D19,');
adoq_imp.SQL.Add('SUM(CASE DATEPART(D,JBRQ) WHEN ''20'' THEN JBSS END)AS D20,');
adoq_imp.SQL.Add('SUM(CASE DATEPART(D,JBRQ) WHEN ''21'' THEN JBSS END)AS D21,');
adoq_imp.SQL.Add('SUM(CASE DATEPART(D,JBRQ) WHEN ''22'' THEN JBSS END)AS D22,');
adoq_imp.SQL.Add('SUM(CASE DATEPART(D,JBRQ) WHEN ''23'' THEN JBSS END)AS D23,');
adoq_imp.SQL.Add('SUM(CASE DATEPART(D,JBRQ) WHEN ''24'' THEN JBSS END)AS D24,');
adoq_imp.SQL.Add('SUM(CASE DATEPART(D,JBRQ) WHEN ''25'' THEN JBSS END)AS D25,');
adoq_imp.SQL.Add('SUM(CASE DATEPART(D,JBRQ) WHEN ''26'' THEN JBSS END)AS D26,');
adoq_imp.SQL.Add('SUM(CASE DATEPART(D,JBRQ) WHEN ''27'' THEN JBSS END)AS D27,');
adoq_imp.SQL.Add('SUM(CASE DATEPART(D,JBRQ) WHEN ''28'' THEN JBSS END)AS D28,');
adoq_imp.SQL.Add('SUM(CASE DATEPART(D,JBRQ) WHEN ''29'' THEN JBSS END)AS D29,');
adoq_imp.SQL.Add('SUM(CASE DATEPART(D,JBRQ) WHEN ''30'' THEN JBSS END)AS D30,');
adoq_imp.SQL.Add('SUM(CASE DATEPART(D,JBRQ) WHEN ''31'' THEN JBSS END)AS ''D31'' FROM CQ_JB WHERE JBRQ between '''+ FormatDateTime('yyyy/mm/dd',cx_sdt.Date)+''' and '''+FormatDateTime('yyyy/mm/dd',cx_edt.Date)+''' GROUP BY ACCOUNT_ID,JBZXB,JBRQ )n on m.ACCOUNT_ID=n.ACCOUNT_ID where BM='''+ VarToStr(cx_bm.EditValue)+'''');
adoq_imp.Open;
ProgressBar1.Min:=0;
ProgressBar1.Max:=adoq_imp.RecordCount;
adoq_imp.First;
for iLoop:=0 to adoq_imp.RecordCount -1 do
begin
ExcelApp.cells[4+iLoop,1].value:=IntToStr(iLoop+1);
for n:=1 to daysinamonth(StrToInt(FormatDateTime('yyyy',cx_sdt.Date)),StrToInt(FormatDateTime('mm',cx_sdt.Date))) do
begin
if (DayOfWeek(EncodeDate(StrToInt(FormatDateTime('yyyy',cx_sdt.Date)),StrToInt(FormatDateTime('mm',cx_sdt.Date)),n))=1)or(DayOfWeek(EncodeDate(StrToInt(FormatDateTime('yyyy',cx_sdt.Date)),StrToInt(FormatDateTime('mm',cx_sdt.Date)),n))=7) then
ExcelApp.activesheet.cells[4+iLoop,n+5].Interior.ColorIndex:=39;
end;
ExcelApp.cells[4+iLoop,2].value:=Trim(adoq_imp.FieldByName('CB').AsString);
ExcelApp.cells[4+iLoop,3].value:=Trim(adoq_imp.FieldByName('XB').AsString);
ExcelApp.cells[4+iLoop,4].value:=Trim(adoq_imp.FieldByName('ACCOUNT_ID').AsString);
ExcelApp.cells[4+iLoop,5].value:=Trim(adoq_imp.FieldByName('FULL_NAME').AsString);
ExcelApp.cells[4+iLoop,6].value:=Trim(adoq_imp.FieldByName('D1').AsString);
ExcelApp.cells[4+iLoop,7].value:=Trim(adoq_imp.FieldByName('D2').AsString);
ExcelApp.cells[4+iLoop,8].value:=Trim(adoq_imp.FieldByName('D3').AsString);
ExcelApp.cells[4+iLoop,9].value:=Trim(adoq_imp.FieldByName('D4').AsString);
ExcelApp.cells[4+iLoop,10].value:=Trim(adoq_imp.FieldByName('D5').AsString);
ExcelApp.cells[4+iLoop,11].value:=Trim(adoq_imp.FieldByName('D6').AsString);
ExcelApp.cells[4+iLoop,12].value:=Trim(adoq_imp.FieldByName('D7').AsString);
ExcelApp.cells[4+iLoop,13].value:=Trim(adoq_imp.FieldByName('D8').AsString);
ExcelApp.cells[4+iLoop,14].value:=Trim(adoq_imp.FieldByName('D9').AsString);
ExcelApp.cells[4+iLoop,15].value:=Trim(adoq_imp.FieldByName('D10').AsString);
ExcelApp.cells[4+iLoop,16].value:=Trim(adoq_imp.FieldByName('D11').AsString);
ExcelApp.cells[4+iLoop,17].value:=Trim(adoq_imp.FieldByName('D12').AsString);
ExcelApp.cells[4+iLoop,18].value:=Trim(adoq_imp.FieldByName('D13').AsString);
ExcelApp.cells[4+iLoop,19].value:=Trim(adoq_imp.FieldByName('D14').AsString);
ExcelApp.cells[4+iLoop,20].value:=Trim(adoq_imp.FieldByName('D15').AsString);
ExcelApp.cells[4+iLoop,21].value:=Trim(adoq_imp.FieldByName('D16').AsString);
ExcelApp.cells[4+iLoop,22].value:=Trim(adoq_imp.FieldByName('D17').AsString);
ExcelApp.cells[4+iLoop,23].value:=Trim(adoq_imp.FieldByName('D18').AsString);
ExcelApp.cells[4+iLoop,24].value:=Trim(adoq_imp.FieldByName('D19').AsString);
ExcelApp.cells[4+iLoop,25].value:=Trim(adoq_imp.FieldByName('D20').AsString);
ExcelApp.cells[4+iLoop,26].value:=Trim(adoq_imp.FieldByName('D21').AsString);
ExcelApp.cells[4+iLoop,27].value:=Trim(adoq_imp.FieldByName('D22').AsString);
ExcelApp.cells[4+iLoop,28].value:=Trim(adoq_imp.FieldByName('D23').AsString);
ExcelApp.cells[4+iLoop,29].value:=Trim(adoq_imp.FieldByName('D24').AsString);
ExcelApp.cells[4+iLoop,30].value:=Trim(adoq_imp.FieldByName('D25').AsString);
ExcelApp.cells[4+iLoop,31].value:=Trim(adoq_imp.FieldByName('D26').AsString);
ExcelApp.cells[4+iLoop,32].value:=Trim(adoq_imp.FieldByName('D27').AsString);
ExcelApp.cells[4+iLoop,33].value:=Trim(adoq_imp.FieldByName('D28').AsString);
ExcelApp.cells[4+iLoop,34].value:=Trim(adoq_imp.FieldByName('D29').AsString);
ExcelApp.cells[4+iLoop,35].value:=Trim(adoq_imp.FieldByName('D30').AsString);
ExcelApp.cells[4+iLoop,36].value:=Trim(adoq_imp.FieldByName('D31').AsString);

ExcelApp.cells[4+iLoop,42].value:='=SUM(E'+inttostr(4+iLoop)+':AJ'+ inttostr(4+iLoop)+')';
ProgressBar1.Position:=ProgressBar1.Position+1;
Application.ProcessMessages;
adoq_imp.Next;
end;
kye_jufei 2009-03-10
  • 打赏
  • 举报
回复

procedure TCQ_JBDAY_REPORT_F.ExportToMonthsReport; //按月導出加班報表
var
iLoop,n:Integer;
ExcelApp:Variant;
begin
try
Application.ProcessMessages;
ExcelApp:=CreateOleObject('Excel.Application');
except
MessageDlg('對不起,你電腦上沒有安裝Excel,請確認!',mtWarning,[mbOK],0);
Exit;
end;
try
ExcelApp.Caption:='昆盈加班報表';
ExcelApp.Visible:=False;
ExcelApp.WorkBooks.Add;
ExcelApp.WorkBooks[1].WorkSheets[1].name:='加班時數報表';
ExcelApp.WorkBooks[1].WorkSheets[1].Activate;
Screen.Cursor:=crSQLWait;
Application.ProcessMessages;
ExcelApp.cells.Interior.ColorIndex:=2;
ExcelApp.WorkBooks[1].WorkSheets[1].cells[1,8].font.name:='新細明體';
ExcelApp.WorkBooks[1].WorkSheets[1].cells.font.size:=9;
ExcelApp.WorkBooks[1].WorkSheets[1].cells[1,8]:='東 莞 昆 盈 電 腦 制 品 有 限 公 司 '+ VarToStr(cx_bm.Text) + ' 課 '+ FormatDateTime('mm',cx_sdt.Date) +' 月 份 加 班 單';
ExcelApp.WorkBooks[1].WorkSheets[1].cells[1,8].font.bold:=true;
ExcelApp.WorkBooks[1].WorkSheets[1].cells[1,8].font.size:=14;
ExcelApp.Range['A1:AP1'].MergeCells:=True;
ExcelApp.Range['A1:AP1'].HorizontalAlignment:=xlCenter;
Application.ProcessMessages;

ExcelApp.WorkBooks[1].WorkSheets[1].cells[2,1]:='序號';
ExcelApp.Range['A2:A3'].MergeCells:=True;
ExcelApp.WorkBooks[1].WorkSheets[1].cells[2,2]:='廠別';
ExcelApp.Range['B2:B3'].MergeCells:=True;
ExcelApp.WorkBooks[1].WorkSheets[1].cells[2,3]:='線別';
ExcelApp.Range['C2:C3'].MergeCells:=True;
ExcelApp.WorkBooks[1].WorkSheets[1].cells[2,4]:='工號';
ExcelApp.Range['D2:D3'].MergeCells:=True;
ExcelApp.WorkBooks[1].WorkSheets[1].cells[2,5]:='姓名';
ExcelApp.Range['E2:E3'].MergeCells:=True;
ExcelApp.WorkBooks[1].WorkSheets[1].cells[2,36]:='工作天數';
ExcelApp.Range['F2:AJ2'].MergeCells:=True;
ExcelApp.WorkBooks[1].WorkSheets[1].cells[2,37]:='補上月平時';
ExcelApp.Range['AK2:AK3'].MergeCells:=True;
ExcelApp.WorkBooks[1].WorkSheets[1].cells[2,38]:='補上月周日';
ExcelApp.Range['AL2:AL3'].MergeCells:=True;
ExcelApp.WorkBooks[1].WorkSheets[1].cells[2,39]:='平時合計';
ExcelApp.Range['AM2:AM3'].MergeCells:=True;
ExcelApp.WorkBooks[1].WorkSheets[1].cells[2,40]:='周日合計';
ExcelApp.Range['AN2:AN3'].MergeCells:=True;
ExcelApp.WorkBooks[1].WorkSheets[1].cells[2,41]:='節日合計';
ExcelApp.Range['AO2:AO3'].MergeCells:=True;
ExcelApp.WorkBooks[1].WorkSheets[1].cells[2,42]:='合計';
ExcelApp.Range['AP2:AP3'].MergeCells:=True;

ExcelApp.cells[3,6].value:='1';
ExcelApp.ActiveSheet.Columns[6].ColumnWidth:=3;
ExcelApp.cells[3,7].value:='2';
ExcelApp.ActiveSheet.Columns[7].ColumnWidth:=3;
ExcelApp.cells[3,8].value:='3';
ExcelApp.ActiveSheet.Columns[8].ColumnWidth:=3;
ExcelApp.cells[3,9].value:='4';
ExcelApp.ActiveSheet.Columns[9].ColumnWidth:=3;
ExcelApp.cells[3,10].value:='5';
ExcelApp.ActiveSheet.Columns[10].ColumnWidth:=3;
ExcelApp.cells[3,11].value:='6';
ExcelApp.ActiveSheet.Columns[11].ColumnWidth:=3;
ExcelApp.cells[3,12].value:='7';
ExcelApp.ActiveSheet.Columns[12].ColumnWidth:=3;
ExcelApp.cells[3,13].value:='8';
ExcelApp.ActiveSheet.Columns[13].ColumnWidth:=3;
ExcelApp.cells[3,14].value:='9';
ExcelApp.ActiveSheet.Columns[14].ColumnWidth:=3;
ExcelApp.cells[3,15].value:='10';
ExcelApp.ActiveSheet.Columns[15].ColumnWidth:=3;
ExcelApp.cells[3,16].value:='11';
ExcelApp.ActiveSheet.Columns[16].ColumnWidth:=3;
ExcelApp.cells[3,17].value:='12';
ExcelApp.ActiveSheet.Columns[17].ColumnWidth:=3;
ExcelApp.cells[3,18].value:='13';
ExcelApp.ActiveSheet.Columns[18].ColumnWidth:=3;
ExcelApp.cells[3,19].value:='14';
ExcelApp.ActiveSheet.Columns[19].ColumnWidth:=3;
ExcelApp.cells[3,20].value:='15';
ExcelApp.ActiveSheet.Columns[20].ColumnWidth:=3;
ExcelApp.cells[3,21].value:='16';
ExcelApp.ActiveSheet.Columns[21].ColumnWidth:=3;
ExcelApp.cells[3,22].value:='17';
ExcelApp.ActiveSheet.Columns[22].ColumnWidth:=3;
ExcelApp.cells[3,23].value:='18';
ExcelApp.ActiveSheet.Columns[23].ColumnWidth:=3;
ExcelApp.cells[3,24].value:='19';
ExcelApp.ActiveSheet.Columns[24].ColumnWidth:=3;
ExcelApp.cells[3,25].value:='20';
ExcelApp.ActiveSheet.Columns[25].ColumnWidth:=3;
ExcelApp.cells[3,26].value:='21';
ExcelApp.ActiveSheet.Columns[26].ColumnWidth:=3;
ExcelApp.cells[3,27].value:='22';
ExcelApp.ActiveSheet.Columns[27].ColumnWidth:=3;
ExcelApp.cells[3,28].value:='23';
ExcelApp.ActiveSheet.Columns[28].ColumnWidth:=3;
ExcelApp.cells[3,29].value:='24';
ExcelApp.ActiveSheet.Columns[29].ColumnWidth:=3;
ExcelApp.cells[3,30].value:='25';
ExcelApp.ActiveSheet.Columns[30].ColumnWidth:=3;
ExcelApp.cells[3,31].value:='26';
ExcelApp.ActiveSheet.Columns[31].ColumnWidth:=3;
ExcelApp.cells[3,32].value:='27';
ExcelApp.ActiveSheet.Columns[32].ColumnWidth:=3;
ExcelApp.cells[3,33].value:='28';
ExcelApp.ActiveSheet.Columns[33].ColumnWidth:=3;
ExcelApp.cells[3,34].value:='29';
ExcelApp.ActiveSheet.Columns[34].ColumnWidth:=3;
ExcelApp.cells[3,35].value:='30';
ExcelApp.ActiveSheet.Columns[35].ColumnWidth:=3;
ExcelApp.cells[3,36].value:='31';
ExcelApp.ActiveSheet.Columns[36].ColumnWidth:=3;
nbzip 2009-03-10
  • 打赏
  • 举报
回复
var
lQry1 : TQuery; //这里是定义一个
begin
lQry1 := lQry; //然后很传值进来的lQry拷贝
========================
你得为你定义的新的lQry1建一个实例.
>>> lQry1=TQuery.Create(this); //好像是这样写吧,忘记了.
或者,你干脆,就用你传进来的数据集直接操作好了.

按上面逻辑.然后你传进来最好是TSTRINGLIST类型,然后自己拆分一下,呵呵这样你的
功能会有一个重复性.(不管是任何形式的数据集或某种集合,转成TSTRINGLIST)

ron_xin 2009-03-10
  • 打赏
  • 举报
回复
发一份我的代码...

procedure TFrmPrintReport.DataToExcelAir(ReportName :string);
var
J: integer;
begin
Screen.Cursor := crHourGlass;
try
ExcelApplication := CreateOleObject('Excel.Application');
except
ExcelApplication := Null;
Screen.Cursor := crDefault;
MSShow('请先安装MicrSoft Office Excel97/2000。');
Exit;
end;

ExcelApplication.Visible := False;
try
ExcelName:=ExcelApplication.WorkBooks.Add(ExtractFilePath(Application.ExeName)+'ReportModal\Manifest template.xls');
ExcelSheet := ExcelName.Worksheets[1];
except
Screen.Cursor := crDefault;
MSShow('没有找到报表模板,请保证Modal.xls在程序文件的ReportModal文件夹内!');
Abort;
end;

try
J := 14;

ADOQuery1.First;
while not ADOQuery1.eof do
begin
ExcelSheet.cells(J,1) := ADOQuery1.RecNo;
ExcelSheet.cells(J,2) := ADOQuery1.fieldbyname('OriHB').Value;
ExcelSheet.cells(j,3) := Trim(ADOQuery1.FieldByName('Camer').AsString );
ExcelSheet.cells(j,4) := Trim(ADOQuery1.FieldByName('FlightNo').AsString);
ExcelSheet.cells(j,5) := Trim(ADOQuery1.FieldByName('SurName').AsString);
ExcelSheet.cells(j,6) := Trim(ADOQuery1.FieldByName('GivenName').AsString);
ExcelSheet.cells(j,7) := Trim(ADOQuery1.FieldByName('PassportNo').AsString);
ExcelSheet.cells(j,8) := FormatDateTime('yyyy/mm/dd', ADOQuery1.fieldbyname('DateOfBidh').AsDateTime );
//ExcelSheet.cells(j,8) :=ADOQuery1.fieldbyname('DateOfBidh').AsDateTime;
ExcelSheet.cells(j,9) := DelHead(ADOQuery1.FieldByName('Nationality').AsString);
ExcelSheet.cells(j,10) := Trim(ADOQuery1.FieldByName('Dest').AsString);
ExcelSheet.cells(j,11) := 'HKG';
ExcelSheet.cells(j,12) := Trim(ADOQuery1.FieldByName('Luggage').AsString);
ExcelSheet.cells(j,13) := Trim(ADOQuery1.FieldByName('LuggageTag').AsString) ;
ExcelSheet.cells(j,14) := Trim(ADOQuery1.FieldByName('Weight').AsString);
//if ADOQuery1.fieldbyname('Cons').AsBoolean then ExcelSheet.cells(j,15) := '√';
//if ADOQuery1.fieldbyname('E_Ticket').AsBoolean then ExcelSheet.cells(j,16) := '√';
{if ADOQuery1.FieldByName('Type').AsString='团体' then
ExcelSheet.cells(j,17) := 'G'
else
ExcelSheet.cells(j,17) := 'P'; }
//ExcelSheet.cells(j,17) := Trim(ADOQuery1.FieldByName('ReturnTax').AsString);

inc(J);
ADOQuery1.next;
end;

//ExcelSheet.cells(3,8) := 'ZYK'; //Terminal Port:
ExcelSheet.range['H4'].NumberFormatLocal :='yyyy/mm/dd';
ExcelSheet.cells(4,8) := FormatDatetime('YYYY/MM/DD', DateTimePicker1.Date); //Departure Date
ExcelSheet.cells(5,8) := Label4.Caption;//Trip No.
ExcelSheet.cells(6,8) := FlatComboBox1.Text; //Departure Time
ExcelSheet.cells(7,8) := ADOQuery1.RecordCount; //Total no. of Passenger
ExcelSheet.cells(8,8) := CurrToStr(DBSumLuggage.SumCollection.Items[0].SumValue); //Total no. of Baggage:
ExcelSheet.cells(9,8) := CurrToStr(DBSumV_BoradPass.SumCollection.Items[0].SumValue); //No. of upstream check-in pax
ExcelSheet.cells(10,8) := CurrToStr(DBSumLuggage1.SumCollection.Items[0].SumValue); //No. of Through Checked (Tag Through) Baggage

//设置单元格格式
Ranges:=ExcelSheet.range['H14:H' + inttostr(J -1)];
Ranges.NumberFormatLocal :='yyyy/mm/dd';

//左对齐2,居中对齐3,右对齐4
Ranges:=ExcelSheet.range['G14:G' + inttostr(J -1)];
Ranges.HorizontalAlignment :=2;

//画线框
Ranges:=ExcelSheet.range['A13:P' + inttostr(J -1)];
Ranges.Borders.LineStyle := 1;

except
MsShow('在往EXCEL写入数据时出现错误,请重新发送Email!');
Screen.Cursor := crDefault;
abort;
end;

try
ExcelName.SaveAs(ReportName);
except
MSShow('无法保存数据');
Screen.Cursor := crDefault;
abort;
end;

try
ExcelName.Close;
ExcelApplication.Quit;
ExcelSheet :=Unassigned ;
ExcelName := Unassigned;
ExcelApplication:=Unassigned;
Ranges :=Unassigned;
except

end;

Screen.Cursor := crDefault;
end;
ron_xin 2009-03-10
  • 打赏
  • 举报
回复
发一份我的代码...

procedure TFrmPrintReport.DataToExcelAir(ReportName :string);
var
J: integer;
begin
Screen.Cursor := crHourGlass;
try
ExcelApplication := CreateOleObject('Excel.Application');
except
ExcelApplication := Null;
Screen.Cursor := crDefault;
MSShow('请先安装MicrSoft Office Excel97/2000。');
Exit;
end;

ExcelApplication.Visible := False;
try
ExcelName:=ExcelApplication.WorkBooks.Add(ExtractFilePath(Application.ExeName)+'ReportModal\Manifest template.xls');
ExcelSheet := ExcelName.Worksheets[1];
except
Screen.Cursor := crDefault;
MSShow('没有找到报表模板,请保证Modal.xls在程序文件的ReportModal文件夹内!');
Abort;
end;

try
J := 14;

ADOQuery1.First;
while not ADOQuery1.eof do
begin
ExcelSheet.cells(J,1) := ADOQuery1.RecNo;
ExcelSheet.cells(J,2) := ADOQuery1.fieldbyname('OriHB').Value;
ExcelSheet.cells(j,3) := Trim(ADOQuery1.FieldByName('Camer').AsString );
ExcelSheet.cells(j,4) := Trim(ADOQuery1.FieldByName('FlightNo').AsString);
ExcelSheet.cells(j,5) := Trim(ADOQuery1.FieldByName('SurName').AsString);
ExcelSheet.cells(j,6) := Trim(ADOQuery1.FieldByName('GivenName').AsString);
ExcelSheet.cells(j,7) := Trim(ADOQuery1.FieldByName('PassportNo').AsString);
ExcelSheet.cells(j,8) := FormatDateTime('yyyy/mm/dd', ADOQuery1.fieldbyname('DateOfBidh').AsDateTime );
//ExcelSheet.cells(j,8) :=ADOQuery1.fieldbyname('DateOfBidh').AsDateTime;
ExcelSheet.cells(j,9) := DelHead(ADOQuery1.FieldByName('Nationality').AsString);
ExcelSheet.cells(j,10) := Trim(ADOQuery1.FieldByName('Dest').AsString);
ExcelSheet.cells(j,11) := 'HKG';
ExcelSheet.cells(j,12) := Trim(ADOQuery1.FieldByName('Luggage').AsString);
ExcelSheet.cells(j,13) := Trim(ADOQuery1.FieldByName('LuggageTag').AsString) ;
ExcelSheet.cells(j,14) := Trim(ADOQuery1.FieldByName('Weight').AsString);
//if ADOQuery1.fieldbyname('Cons').AsBoolean then ExcelSheet.cells(j,15) := '√';
//if ADOQuery1.fieldbyname('E_Ticket').AsBoolean then ExcelSheet.cells(j,16) := '√';
{if ADOQuery1.FieldByName('Type').AsString='团体' then
ExcelSheet.cells(j,17) := 'G'
else
ExcelSheet.cells(j,17) := 'P'; }
//ExcelSheet.cells(j,17) := Trim(ADOQuery1.FieldByName('ReturnTax').AsString);

inc(J);
ADOQuery1.next;
end;

//ExcelSheet.cells(3,8) := 'ZYK'; //Terminal Port:
ExcelSheet.range['H4'].NumberFormatLocal :='yyyy/mm/dd';
ExcelSheet.cells(4,8) := FormatDatetime('YYYY/MM/DD', DateTimePicker1.Date); //Departure Date
ExcelSheet.cells(5,8) := Label4.Caption;//Trip No.
ExcelSheet.cells(6,8) := FlatComboBox1.Text; //Departure Time
ExcelSheet.cells(7,8) := ADOQuery1.RecordCount; //Total no. of Passenger
ExcelSheet.cells(8,8) := CurrToStr(DBSumLuggage.SumCollection.Items[0].SumValue); //Total no. of Baggage:
ExcelSheet.cells(9,8) := CurrToStr(DBSumV_BoradPass.SumCollection.Items[0].SumValue); //No. of upstream check-in pax
ExcelSheet.cells(10,8) := CurrToStr(DBSumLuggage1.SumCollection.Items[0].SumValue); //No. of Through Checked (Tag Through) Baggage

//设置单元格格式
Ranges:=ExcelSheet.range['H14:H' + inttostr(J -1)];
Ranges.NumberFormatLocal :='yyyy/mm/dd';

//左对齐2,居中对齐3,右对齐4
Ranges:=ExcelSheet.range['G14:G' + inttostr(J -1)];
Ranges.HorizontalAlignment :=2;

//画线框
Ranges:=ExcelSheet.range['A13:P' + inttostr(J -1)];
Ranges.Borders.LineStyle := 1;

except
MsShow('在往EXCEL写入数据时出现错误,请重新发送Email!');
Screen.Cursor := crDefault;
abort;
end;

try
ExcelName.SaveAs(ReportName);
except
MSShow('无法保存数据');
Screen.Cursor := crDefault;
abort;
end;

try
ExcelName.Close;
ExcelApplication.Quit;
ExcelSheet :=Unassigned ;
ExcelName := Unassigned;
ExcelApplication:=Unassigned;
Ranges :=Unassigned;
except

end;

Screen.Cursor := crDefault;
end;
hanks_gao 2009-03-09
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 frankie_24 的回复:]
看你用到了string,就应该在调用的时候加上Sharemen
并且是放在第一应用
如果不想这样就用Pchar
[/Quote]

楼主改用Pchar试试!
masterjames 2009-03-09
  • 打赏
  • 举报
回复
initialization
coinitialize(nil);
finalization
counInitialize;
end.
加上这个试一下。
frankie_24 2009-03-09
  • 打赏
  • 举报
回复
看你用到了string,就应该在调用的时候加上Sharemen
并且是放在第一应用
如果不想这样就用Pchar

2,498

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 数据库相关
社区管理员
  • 数据库相关社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧