我在想在动态库里面完成写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;

解决方案 »

  1.   

    看你用到了string,就应该在调用的时候加上Sharemen
    并且是放在第一应用
    如果不想这样就用Pchar
      

  2.   

    initialization
      coinitialize(nil);
      finalization
      counInitialize;
    end.
    加上这个试一下。
      

  3.   

    发一份我的代码...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;
      

  4.   

    发一份我的代码...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;
      

  5.   

    var 
      lQry1 : TQuery;    //这里是定义一个
    begin 
      lQry1 := lQry;     //然后很传值进来的lQry拷贝
    ========================
    你得为你定义的新的lQry1建一个实例.
    >>> lQry1=TQuery.Create(this);   //好像是这样写吧,忘记了.  
    或者,你干脆,就用你传进来的数据集直接操作好了.按上面逻辑.然后你传进来最好是TSTRINGLIST类型,然后自己拆分一下,呵呵这样你的
    功能会有一个重复性.(不管是任何形式的数据集或某种集合,转成TSTRINGLIST)
      

  6.   

     
    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;
      

  7.   


        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;
      

  8.   


     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;