用TMS FlexCel将uniDBGrid数据导出到Excel

调用函数

procedure TbbbbReports.btnExportToExcelClick(Sender: TObject);
var
  XLSX : TExcelFile;
  Mem : TMemoryStream;
begin
  UniDBGrid1.DataSource := Nil; //<- Stop DBGrid from updating

  XLSX := TXLSFile.Create;

  DataSetToXLS( XLSX, SDQueryReport ); //<- Your dataset goes here. I use SQLDirect

  Mem := TMemoryStream.Create;
  XLSX.Save( Mem, TFileFormats(4) );
  Mem.Position := 0;
  UniSession.SendStream( Mem, TrimSpecialStr(sReportname) + '.xlsx' ); //<- Push to browser
  Mem.Free;
  XLSX.Free;

  UniDBGrid1.DataSource := DataSource1;
end;

函数代码:

unit DataSetExports;

interface

Uses
  Windows, System.SysUtils, VCL.FlexCel.Core, FlexCel.XlsAdapter, Data.DB;

procedure DataSetToXLS( XLSX : TExcelFile; DataSet : TDataSet; WorkSheetCount : Integer = 1; ActiveSheet : Integer = 1 );

implementation

procedure DataSetToXLS( XLSX : TExcelFile; DataSet : TDataSet; WorkSheetCount : Integer = 1; ActiveSheet : Integer = 1 );
var
  ioldrecno, icol, irow : integer;
  fmt: TFlxFormat;
  fmtDateTime : Integer;
begin
  //make sure it is XLSX format
  ioldrecno := DataSet.RecNo;

  XLSX.SupportsXlsx := True;
  XLSX.NewFile(WorkSheetCount, TExcelFileFormat(2) );  //2 = v2010, 1 = v2007, 0 = v2003
  XLSX.ActiveSheet := ActiveSheet;
  fmt := XLSX.GetDefaultFormat;
  fmt.Format := 'yyyy-mm-dd HH:MM:SS AM/PM';
  fmtDateTime := XLSX.AddFormat(fmt);

  //Write the headers
  irow := 1;
  for icol := 0 to DataSet.FieldCount - 1 do
  begin
    XLSX.SetCellValue( irow, icol + 1, DataSet.Fields[icol].DisplayName );
  end;

  inc(irow);

  DataSet.First;
  while Not DataSet.EOF do
  begin
    for icol := 0 to DataSet.FieldCount - 1 do
    begin
      case Dataset.Fields[icol].DataType of
        ftUnknown, ftString,
        ftBoolean, ftFloat, ftCurrency, ftBCD,
        ftBytes, ftVarBytes, ftAutoInc, ftBlob, ftMemo, ftGraphic, ftFmtMemo,
        ftParadoxOle, ftDBaseOle, ftTypedBinary, ftCursor, ftFixedChar, ftWideString,
        ftADT, ftArray, ftReference, ftDataSet, ftOraBlob, ftOraClob,
        ftVariant, ftInterface, ftIDispatch, ftGuid, ftFMTBcd,
        ftFixedWideChar, ftWideMemo, ftOraInterval,
        ftConnection, ftParams, ftStream, ftTimeStampOffset, ftObject:
          begin
            XLSX.SetCellValue( irow, icol + 1, Dataset.Fields[icol].AsString );
          end;
        ftSmallint, ftInteger, ftWord, ftLargeint, ftLongWord, ftShortint, ftByte, ftSingle:
          begin
            XLSX.SetCellValue( irow, icol + 1, Dataset.Fields[icol].AsInteger );
          end;
        ftDate, ftTime, ftDateTime, ftOraTimeStamp, ftTimeStamp:
          begin
            XLSX.SetCellValue( irow, icol + 1, Dataset.Fields[icol].AsDateTime );
            XLSX.SetCellFormat( irow, icol + 1, fmtDateTime );
          end;
        ftExtended:
          begin
            XLSX.SetCellValue( irow, icol + 1, Dataset.Fields[icol].AsFloat );
          end;
      end;
    end;
    inc(irow);
    DataSet.Next;
  end;
  DataSet.RecNo := ioldrecno;
end;


end.

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: TMS Flexcel是一种强大而灵活的软件工具,用于在Delphi和C ++ Builder等开发环境中创建和处理Excel文件。TMS Flexcel具有丰富的特性和功能,可以帮助开发人员在应用程序中轻松地生成和操作Excel文档。 首先,TMS Flexcel允许开发人员创建具有各种格式、样式和图表的Excel文件。开发人员可以使用TMS Flexcel提供的丰富的API来设置单元格的格式、字体、边框等属性,还可以创建各种类型的图表来展示数据。这样,开发人员可以根据需求创建出具有专业外观的Excel文件,提高应用程序的用户体验。 其次,TMS Flexcel还提供了丰富的数据处理功能。开发人员可以使用TMS Flexcel来读取和写入Excel文件中的数据,还可以对数据进行排序、筛选、求和等操作。此外,TMS Flexcel还支持公式计算,开发人员可以使用公式来进行复杂的数据处理和计算。 此外,TMS Flexcel还具有跨平台的特性。开发人员可以在不同的操作系统上使用TMS Flexcel来生成和处理Excel文件,例如Windows、Mac和Linux等。这为开发人员提供了更大的灵活性和多样性,可以在不同的开发环境和平台上使用TMS Flexcel来满足不同的需求。 总之,TMS Flexcel是一个功能强大、灵活且跨平台的软件工具,可以帮助开发人员轻松地生成和处理Excel文件。它提供了丰富的特性和功能,使开发人员能够创建具有专业外观的Excel文件,并对数据进行各种处理和计算。无论在哪个平台上,TMS Flexcel都能够提供高性能和稳定的表现,是开发人员不可或缺的工具之一。 ### 回答2: TMS FlexCel是一款用于创建、读取和修改Excel文件的强大组件库。它提供了丰富的功能和灵活的API,使开发人员能够轻松地操作和控制Excel文件。 TMS FlexCel支持各种Excel文件格式,包括XLSX、XLS、和CSV等。它可以从头开始创建新的Excel文件,也可以从现有文件中读取和修改数据。通过灵活的API,开发人员可以在Excel文件中添加、删除和移动工作表,插入图片、图表和公式,并设置单元格的样式和格式。 TMS FlexCel还支持导出数据到不同的格式,如PDF和HTML。开发人员可以利用其强大的导出功能,将Excel数据转换为其他格式,并在各种平台和设备上显示和共享。 此外,TMS FlexCel还提供了丰富的文档和示例,以帮助开发人员快速上手和理解其功能和用法。它支持多种开发环境和平台,如Delphi、.NET和JavaScript等,使开发人员能够在不同的项目中灵活使用。 总之,TMS FlexCel是一款功能强大且易于使用的Excel组件库,为开发人员提供了灵活的操作和控制Excel文件的能力,帮助他们快速开发出高质量的Excel应用程序。 ### 回答3: TMS FlexCel是一种功能强大且灵活的电子表格组件,用于在Delphi和.NET开发环境中处理和生成电子表格文件。它允许开发人员通过编程方式创建、修改和读取Excel文件,还可以将数据导出Excel、PDF、HTML和其他格式中。 TMS FlexCel具有很多有用的功能。首先,它支持几乎所有Excel文件格式,包括xlsx、xls和CSV等。这意味着开发人员可以轻松地与Excel文件进行交互,而无需额外处理。其次,它提供了丰富的API,允许开发人员对电子表格中的单元格、行、列和工作表进行操作。例如,可以通过代码自动填充数据、格式化单元格、创建图表和添加公式等。此外,TMS FlexCel还支持合并和拆分单元格、保护工作表和设置打印选项等功能。 除了基本的电子表格功能外,TMS FlexCel还提供了一些高级功能。例如,它允许开发人员生成报表和标签,执行数据筛选和排序,并支持多语言文本和国际化。此外,TMS FlexCel还支持复杂的数据绑定,可以将数据库或其他数据源与电子表格中的单元格关联起来。这样,当数据源发生变化时,电子表格中的数据也会自动更新。 总之,TMS FlexCel是一个功能强大、易于使用的电子表格组件,非常适合开发人员在Delphi和.NET平台上处理和生成Excel文件。它为开发人员提供了许多有用的功能和灵活性,使其成为开发商业应用和生成报告的理想选择。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值