DBGird中数据导入Excel例子!

来源:互联网 发布:物业app软件 编辑:程序博客网 时间:2024/06/15 12:09
部分代码参考CSDN网站上的帖子!
procedure TForm1.BitBtn1Click(Sender: TObject);
var
  ExcelWorksheet: TExcelWorksheet;
  ExcelApplication: TExcelApplication;
  ExcelWorkbook: TExcelWorkbook;
  i, row, column: integer;
  x1,x2,y1,y2 : integer;
begin
  x1 := 1;
  y1 := 2;
  column := 1;
  ExcelApplication := TExcelApplication.Create(Application);
  ExcelWorksheet := TExcelWorksheet.Create(Application);
  ExcelWorkbook := TExcelWorkbook.Create(Application);

  Try
    ExcelApplication.Connect;
  Except
    ShowMessage('Error!');
  End;
  ExcelApplication.Visible[0] := True;
  ExcelApplication.Caption := 'Excel Application';
  ExcelApplication.Workbooks.Add(Null, 0);
  ExcelWorkbook.ConnectTo(ExcelApplication.Workbooks[1]);
  ExcelWorksheet.ConnectTo(ExcelWorkbook.Worksheets[1] as _Worksheet);
  row := 3;
  ExcelWorksheet.Cells.Item[1, 1] := 'XXXXX';   //标题设置
  ExcelWorksheet.Range[ExcelWorksheet.Cells.Item[1,1],
                       ExcelWorksheet.Cells.Item[1,2]].Merge(0);
  ExcelWorksheet.Cells.Item[1,1].HorizontalAlignment:=xlCenter;
  for i:=1 to DBGrid1.Columns.Count do
  begin
    ExcelWorksheet.Cells.Item[2, i] := DBGrid1.Columns.Items[i-1].FieldName;
  end;
  While Not (DBGrid1.DataSource.DataSet.Eof) do
  begin
    column := 1;
    for i := 1 to DBGrid1.Columns.Count do
    begin
      ExcelWorksheet.Cells.Item[row, column] := DBGrid1.DataSource.DataSet.fields[i - 1].AsString;
      column := column + 1;
    end;
    DBGrid1.DataSource.DataSet.Next;
    row := row + 1;
  end;
  y2 := row-1;
  x2 := column-1;
 //数据内容设置
  ExcelWorksheet.Range[ExcelWorksheet.Cells.Item[y1,x1],
                       ExcelWorksheet.Cells.Item[y2,x2]].Font.Name := '宋体';
  ExcelWorksheet.Range[ExcelWorksheet.Cells.Item[y1,x1],
                       ExcelWorksheet.Cells.Item[y2,x2]].Font.Size := 10;
  ExcelWorksheet.Range[ExcelWorksheet.Cells.Item[y1-1,x1],
                       ExcelWorksheet.Cells.Item[y2,x2]].Borders.Color := clBlack;
  ExcelWorksheet.Range[ExcelWorksheet.Cells.Item[y1-1,x1],
                       ExcelWorksheet.Cells.Item[y2,x2]].Borders.LineStyle := xlContinuous;
  ExcelWorksheet.Cells.Item[1,1].Font.Name := '宋体';  //标题字体设置
  ExcelWorksheet.Cells.Item[1,1].Font.Size := 12;
  ExcelWorksheet.Cells.Item[1,1].Font.Bold := True;

  ExcelApplication.Disconnect;
  ExcelApplication.Free;
  ExcelWorksheet.Free;
  ExcelWorkbook.Free;
end;

原创粉丝点击