码迷,mamicode.com
首页 > 其他好文 > 详细

unigui导出TMS.Flexcel【5】

时间:2018-08-13 17:04:28      阅读:368      评论:0      收藏:0      [点我收藏+]

标签:support   lse   mes   get   play   session   assign   lin   cell   

 

技术分享图片
procedure TUniFrmeWebEmbedBase.ExportData;
 //导出到excel
var
  FlexCelImport1: TExcelFile;
  i, rowindex, colindex: Integer;
  ms : TMemoryStream;
begin
  { 检查数据集 }
  if Assigned(cdsMain) and cdsMain.Active then
  try
    { 创建Excel文件 }
    FlexCelImport1 := TXlsFile.Create(true);//NewFile(1);
    FlexCelImport1.NewFile(1);

//  FlexCelImport1.SupportsXlsx := True;
//  FlexCelImport1.NewFile(WorkSheetCount, TExcelFileFormat(2) );  //2 = v2010, 1 = v2007, 0 = v2003
//  FlexCelImport1.ActiveSheet := 1;

    cdsMain.First;
    { 第一行为标题 }
    rowindex := 1;
    colindex := 1;
    for i := 0 to cdsMain.FieldCount -1 do
      { 只导出数据集中可视的字段 }
      if cdsMain.Fields[i].Visible then
      begin
        FlexCelImport1.SetCellValue(rowindex, colindex,cdsMain.Fields[i].DisplayLabel);
        inc(colindex);
      end;
    { 依次导出数据 }
    while not cdsMain.Eof do
    begin
      { 增加一行 }
      inc(rowindex);
      colindex := 1;
      for i := 0 to cdsMain.FieldCount -1 do
        { 只导出数据集中可视的字段 }
        if cdsMain.Fields[i].Visible then
        begin
          { 时间和日期字段需要单独出来一下,否则出来的都是浮点数 }
          if cdsMain.Fields[i].DataType in [ftDate, ftDateTime, ftTime, ftTimeStamp] then
            FlexCelImport1.SetCellValue(rowindex, colindex, cdsMain.Fields[i].AsString)
          else
            FlexCelImport1.SetCellValue(rowindex, colindex, cdsMain.Fields[i].Value);
          inc(colindex);
        end;
      { 下一条 }
      cdsMain.Next;
    end;
    FlexCelImport1.PrintLandscape := true;
   // FlexCelImport1.
    { 创建内存流 }
    ms := TMemoryStream.Create;
    try
      { 将Excel保存到内存流 }
      FlexCelImport1.save(ms);
      ms.Position := 0;
      { 将数据流发送到客户端,同时指定下载文件名,非常简单 }
      UniSession.SendStream(ms, usegear.xls );
    finally
      ms.Free;
    { 清理内存 }
      FlexCelImport1.Free;
    end;
  except
    on E : Exception do
      FlexCelImport1.Free;
  end;
end;
View Code

调用

procedure TUniFrmeWebEmbedBase_authoManage.act_ExportExecute(Sender: TObject);
begin
  cdsMain.Data := Unit_dm.DataModule1.getTabeldata(select * from SM_role) ;
  inherited;
end;

 

unigui导出TMS.Flexcel【5】

标签:support   lse   mes   get   play   session   assign   lin   cell   

原文地址:https://www.cnblogs.com/usegear/p/9468905.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!