delphi 导出excel

Var  FExcel:OleVariant; //excel应用程序  FWorkBook :OleVariant; //工作表  Temsheet:OleVariant; //工作薄  FPicture:OleVariant;//图片  tmpstr:String;  range:variant;//范围  i,j,TemInt:integer;  TemFileName:String;  real_american_price:Double;begin  if (kind = '小米清单') or (kind = '小商品清单') then  Begin    if cxxiaomilist.DataController.RecordCount = 0 then    begin      Application.MessageBox(PChar('没有导出数据!'),'提示',MB_OK + MB_ICONWARNING);      abort;    end;    SaveDialog1.Filter:='.xlsx';    if SaveDialog1.Execute then    begin      TemFileName:=SaveDialog1.FileName+'.xlsx';      Screen.Cursor:=CrHourGlass;      TemInt:=0;      try        FExcel:= CreateoleObject('excel.Application');        FWorkBook:=FExcel.WorkBooks.Add(-4167); //新的工作表        Temsheet:=FWorkBook.Worksheets.Add;        Temsheet.Name:=kind;      except        Application.MessageBox('无法创建Excel文件, 请确认是否安装了Excel软件',          PChar(Application.Title), MB_OK + MB_ICONWarning);        Exit;      end;      Temsheet.Select;      Temsheet.Range['A1','A1'].RowHeight := 60;      for i := 1 to 111 do      begin        Temsheet.Columns[i].ColumnWidth:=15;        Temsheet.cells[1,i] := '';        if i = 1 then          Temsheet.cells[1,i] := cxxiaomilist.Bands[111].Caption;        if i = 22 then          Temsheet.cells[1,i] := cxxiaomilist.Bands[112].Caption;        Temsheet.cells[2,i] := cxxiaomilist.Bands[i-1].Caption;        ////////////////////////////////////////////////////////////        if i < 22 then           Temsheet.cells[3,i] := cxxiaomilist.Columns[i-1].Caption;      end;      Temsheet.Columns[1].NumberFormat:='#####################';      range:=Temsheet.Range[Temsheet.cells[3,22],Temsheet.cells[3,23]];//选定表格      range.select;      range.merge;      range:=Temsheet.Range[Temsheet.cells[3,22],Temsheet.cells[3,24]];//选定表格      range.select;      range.merge;      Temsheet.Cells[3,22].HorizontalAlignment:=-4108; //字居中      Temsheet.Cells[3,22] := cxxiaomilist.Bands[112 + 1].Caption;      range:=Temsheet.Range[Temsheet.cells[3,25],Temsheet.cells[3,26]];//选定表格      range.select;      range.merge;      range:=Temsheet.Range[Temsheet.cells[3,25],Temsheet.cells[3,27]];//选定表格      range.select;      range.merge;      Temsheet.Cells[3,25].HorizontalAlignment:=-4108; //字居中      Temsheet.Cells[3,25] := cxxiaomilist.Bands[112 + 2].Caption;      range:=Temsheet.Range[Temsheet.cells[3,109],Temsheet.cells[3,110]];//选定表格      range.select;      range.merge;      range:=Temsheet.Range[Temsheet.cells[3,109],Temsheet.cells[3,111]];//选定表格      range.select;      range.merge;      Temsheet.Cells[3,109].HorizontalAlignment:=-4108; //字居中      Temsheet.Cells[3,109] := cxxiaomilist.Bands[112 + 30].Caption;      for I := 0 to cxxiaomilist.DataController.RecordCount - 1 do      begin        for j := 1 to cxxiaomilist.ColumnCount do        begin          Temsheet.cells[4 + i,j] := VarToStr(cxxiaomilist.DataController.GetValue(i,j-1));//          if j = 10 then//          if TryStrToFloat(VarToStr(cxxiaomilist.DataController.GetValue(i,j)),real_american_price) then//          if real_american_price > 150 then//          begin//            Temsheet.Cells[4 + i,j].Interior.Color := clRed;//            Temsheet.Cells[4 + i,j + 4].Interior.Color := $0075C76B;//          end;        end;      end;  //    for i:=0 to DBGrid2.Columns.Count - 1 do  //    begin  //      Temsheet.Cells[TemInt,i+2]:=DBGrid2.Columns[i].Title.Caption;  //      Temsheet.Cells[TemInt,i+2].HorizontalAlignment:=-4108; //字居中  //      Temsheet.Cells[TemInt,i+2].Interior.Color:=clGray;     //单元格背景色  //      range:=Temsheet.Range[Temsheet.cells[TemInt,i+2],Temsheet.cells[TemInt,i+2]];//选定表格  //      range.borders.linestyle:=1;//华线  //    end;  //  //    TemInt:=TemInt+1;  //    //////////////////////////////////////////////  //    j:=0;  //    DBGrid2.DataSource.DataSet.First;  //    while not DBGrid2.DataSource.DataSet.Eof do  //    begin  //      Temsheet.Cells[TemInt+j,1].Value:=j+1;  //      Temsheet.Cells[TemInt+j,1].HorizontalAlignment:=-4108; //字居中  //      range:=Temsheet.Range[Temsheet.cells[TemInt+j,1],Temsheet.cells[TemInt+j,1]];//选定表格  //      range.borders.linestyle:=1;//华线  //  //      for i:=0 to DBGrid2.Columns.Count - 1 do  //      begin  //        Temsheet.Cells[TemInt+j,i+2].Value:=DBGrid2.Fields[i].AsString;  //        range:=Temsheet.Range[Temsheet.cells[TemInt+j,i+2],Temsheet.cells[TemInt+j,i+2]];//选定表格  //        range.borders.linestyle:=1;//华线  //      end;  //      DBGrid2.DataSource.DataSet.Next;  //      j:=j+1;  //    end;      Application.ProcessMessages;      Screen.Cursor:=CrDefault;      FExcel.WorkBooks[1].saveas(TemFileName);//保存文件      FExcel.workbooks[1].close; //关闭工作表      Application.ProcessMessages;      MessageBox(Handle,'导出成功','提示',MB_OK);      //FExcel.visible:=true;      FExcel.quit; //关闭Excel      FExcel := unassigned;      //shellexecute(0,'open',PChar(ExtractFileName(TemFileName)),nil,PChar(ExtractFilePath(TemFileName)),SW_Show);    end;  End;

相关文章
相关标签/搜索