zoukankan      html  css  js  c++  java
  • uniGUI试用笔记(七)

    uniGUI的文件下载由于TUniSession的存在而变得非常简单,最典型的一个例子就是将列表中的所有数据导出到Excel中。服务器上采用TMS FlexCel控件,先将数据集中的记录导入到Excel文件中,然后再将Excel文件内容输出到内存流中,最后通过TUniSession发送到客户端。代码如下:

    procedure TfmeWebDBListBase.ExportData; 
    var 
      i, rowindex, colindex: Integer; 
      ms : TMemoryStream; 
    begin 
      { 检查数据集 }
      if Assigned(cdsMain) and cdsMain.Active then 
      try 
        { 创建Excel文件 } 
        FlexCelImport1.NewFile(1); 
        cdsMain.First; 
        { 第一行为标题 } 
        rowindex := 1; 
        colindex := 1; 
        for i := 0 to cdsMain.FieldCount -1 do
          { 只导出数据集中可视的字段 } 
          if cdsMain.Fields[i].Visible then 
          begin 
            FlexCelImport1.CellValue[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.CellValue[rowindex, colindex] := cdsMain.Fields[i].AsString 
              else 
                FlexCelImport1.CellValue[rowindex, colindex] := cdsMain.Fields[i].Value; 
              inc(colindex); 
            end;
          { 下一条 } 
          cdsMain.Next; 
        end; 
    
        { 创建内存流 } 
        ms := TMemoryStream.Create; 
        try
          { 将Excel保存到内存流 } 
          FlexCelImport1.SaveToStream(ms); 
          ms.Position := 0;
          { 将数据流发送到客户端,同时指定下载文件名,非常简单 } 
          MainForm.uniApplication.UniSession.SendStream( 
            ms, ModelName + '.xls' ); 
        finally 
          ms.Free; 
        { 清理内存 }
          FlexCelImport1.CloseFile; 
        end;
      except 
        on E : Exception do 
          FlexCelImport1.CloseFile; 
      end; 
    end;
  • 相关阅读:
    读书笔记--SQL必知必会21--使用游标
    读书笔记--SQL必知必会20--管理事务处理
    读书笔记--SQL必知必会19--存储过程
    读书笔记--SQL必知必会18--视图
    PopupWindow
    android shape的使用
    带删除小图标的EditText
    Android点击EditText文本框之外任何地方隐藏键盘的解决办法
    Android px、dp、sp之间相互转换
    android edittext不弹出软键盘
  • 原文地址:https://www.cnblogs.com/ChinaEHR/p/4012113.html
Copyright © 2011-2022 走看看