利用cxSpreadSheetBook电子表格控件完成复杂性的报表例子

如果报表复杂,可以利用cxSpreadSheetBook电子表格控件来生成报表。

下面例子是装载数据同时设置电子表格格式:

procedure TAO_RepShowData.LoadRepData;
var
  CurCursor: TCursor;
begin
  CurCursor := Screen.Cursor;                              // 光标设置
  Screen.Cursor := crHourGlass;
  try
    cxSpreadBook.BeginUpdate;
    LoadTitle;                                                      //从数据库取数加载表格标题                       
    LoadData;                                                     //从数据库取数加载表格数据
    cxSpreadBook.ActiveSheet.SelectCell(-1, -1, False);//光标位置在表格外
  Finally
    cxSpreadBook.EndUpdate;
    cxSpreadBook.Recalc;                                   //重新计算表格
    cxSpreadBook.ActivePage := 0;                          // 第一页

Screen.Cursor := CurCursor;                     // 光标设置

end;
end;

procedure TAO_RepShowData.LoadTitle;   //装载表格标题
var
  i, CRow: integer;
  CHeader: TcxSSHeader;
begin
  i := cdsAnalyseField.RecordCount;  //合并单元格格数

//GlobalVars.Values[‘REPNAME‘] 是个变量
  SetCellText(1, 0, GlobalVars.Values[‘REPNAME‘]);  //设置表格头名称(报表名称)    cxSpreadBook.ActiveSheet.Caption := GlobalVars.Values[‘REPNAME‘];//页标签名称
  cxSpreadBook.ActiveSheet.SelectCell(1, 0); //选中单元格
  SetMergedStateA(1, 0, i + 1, 0, true);  //合并单元格
  SetCellFont(1, 0, i, 0, [fsBold], 20);  //设置字体大小
  //SetCellsStyle([svAlign], haCenter, 0, cbxFont.Text, []);
  SetCellAlignment(1, 0, i + 1, 0, haCenter, vaCenter);//格式居中
  SetCellText(1, 1, GlobalVars.Values[‘JHDW‘]);  //设置金额单位
  SetCellText(1, 2, ‘单位名称‘);//设置表格表题
  SetCellAlignment(1, 2, 1, 2, haCenter, vaCenter);//格式居中

SetCellFont(1, 2, 1, 2, [fsBold], 8);
  CHeader := cxSpreadBook.ActiveSheet.Cols;
  CHeader.Size[1] := 180;//列宽度
  cdsRepDwData.DisableControls;
  try
    CRow := 3;//从第三行开始
    cxSpreadBook.ActivePage := 0;
    cdsRepDwData.First;
    while not cdsRepDwData.eof do begin
      SetCellText(1, CRow, cdsRepDwDataDANWEI_MINGCHANG.Value);//从数据库中取数填入表格单元
      cdsRepDwData.Next;
      Inc(CRow);
    end;
    SetmnuCellBorders(1, 2, 1, CRow - 1, 5);//设置表格格式
    //SetCellPattern(1,2,1,CurRow-1,23,1,fsSolid);
  Finally
    cdsRepDwData.EnableControls;                         // restore original cursor
  end;
end;

procedure TAO_RepShowData.LoadData;//装载数据
var
  CurCol, CurRow: Integer;
  CHeader: TcxSSHeader;
begin
  if cdsAnalyseField.RecordCount > 0 then
  begin
    try

cxSpreadBook.ActivePage := 0;
      cdsAnalyseField.DisableControls;
      CurCol := 2;//从第二列开始
      CurRow := 3;//从第三行开始
      cdsAnalyseField.First;
      while not cdsAnalyseField.eof do begin
        CHeader := cxSpreadBook.ActiveSheet.Cols;
        CHeader.Size[CurCol] := 120;//列宽度
        SetCellText(CurCol, 2, cdsAnalyseFieldANALYSE_FIELD_NAME.Value);
        try
          OpenRepDwData(GlobalVars.Values[‘DANWEI_QYDM‘], StrToInt(GlobalVars.Values[‘REP_VOL_KEY‘]), cdsAnalyseFieldSIGN_CELL_KEY.Value);
          cdsRepDwData.DisableControls;
          CurRow := 3;
          cdsRepDwData.First;
          while not cdsRepDwData.eof do begin
            if cxSpreadBook.ActiveSheet.GetCellObject(1, CurRow).Text = cdsRepDwDataDANWEI_MINGCHANG.Value then
            begin
              if cdsRepDwDataSIGN_DELL_TYPE.Value = 0 then  //RoundFloat(StrToFloat(Text),2)
                if cdsRepDwDataREP_DATA.Value = 0 then
                  SetCellText(CurCol, CurRow, ‘0‘)
                else
                begin
                  if GlobalVars.Values[‘JHDW‘] = ‘金额单位:元‘ then//加载数据,金额换算成元。
                    SetCellText(CurCol, CurRow, FormatFloat(‘#,#.00‘, cdsRepDwDataREP_DATA.Value));    //FormatFloat(‘#,#.##‘,cdsRepCellDataREP_DATA.Value))
                  if GlobalVars.Values[‘JHDW‘] = ‘金额单位:万元‘ then//加载数据,金额换算成万元。
                    SetCellText(CurCol, CurRow, FormatFloat(‘#,#.00‘, StrToFloat(FloatToStr(cdsRepDwDataREP_DATA.Value / 10000))));
                  if GlobalVars.Values[‘JHDW‘] = ‘金额单位:亿元‘ then//加载数据,金额换算成亿元。
                    SetCellText(CurCol, CurRow, FormatFloat(‘#,#.00‘, StrToFloat(FloatToStr(cdsRepDwDataREP_DATA.Value / 100000000))));
                end;
              if cdsRepDwDataSIGN_DELL_TYPE.Value = 1 then
                SetCellText(CurCol, CurRow, cdsRepDwDataREP_TEXT.Value);
            end;
            cdsRepDwData.Next;
            Inc(CurRow);
          end;
        Finally
          cdsRepDwData.EnableControls;                         // restore original cursor
        end;
        cdsAnalyseField.Next;
        Inc(CurCol);
      end;
      SetCellFormat(2, 3, CurCol, CurRow, 4);//设置表格格式
      SetmnuCellBorders(2, 2, CurCol - 1, CurRow - 1, 5);//设置表格线
      SetCellAlignment(2, 2, CurCol, 2, haCenter, vaCenter);
      SetCellFont(2, 2, CurCol, 2, [fsBold], 8);
    Finally
      cdsAnalyseField.EnableControls;                         // restore original cursor
    end;
  end;
end;

时间: 2024-10-10 08:41:10

利用cxSpreadSheetBook电子表格控件完成复杂性的报表例子的相关文章

强大的web电子表格控件dhtmlxSpreadsheet免费下载地址

tmlxSpreadsheet 是一个由JavaScript 和 PHP 写成的电子表格控件(包含WP插件, Joomla插件等等).. 程序员可以容易的添加一个类似Excel功能的,可编辑的表格功能到自己的Web应用中. 目前有一些在线的电子表格应用,例如谷歌的google docs, 但是这些应用不能用在内网或将数据存储到自己的服务器中.你的需求往往是需要在企业内部网络和应用中使用这种功能. 利用dhtmlxSpreadsheet,  你可以非常容易的实现一个网页版的电子表格功能(在线编辑或

网页版电子表格控件tmlxSpreadsheet免费下载地址

tmlxSpreadsheet 是一个由JavaScript 和 PHP 写成的电子表格控件(包含WP插件, Joomla插件等等).. 程序员可以容易的添加一个类似Excel功能的,可编辑的表格功能到自己的Web应用中. 目前有一些在线的电子表格应用,例如谷歌的google docs, 但是这些应用不能用在内网或将数据存储到自己的服务器中.你的需求往往是需要在企业内部网络和应用中使用这种功能. 利用dhtmlxSpreadsheet,  你可以非常容易的实现一个网页版的电子表格功能(在线编辑或

WPF利用通过父控件属性来获得绑定数据源RelativeSource

WPF利用通过父控件属性来获得绑定数据源RelativeSource 有时候我们不确定作为数据源的对象叫什么名字,但知道作为绑定源与UI布局有相对的关系,如下是一段XAML代码,说明多层布局控件中放置一个文本控件,来显示父级控件的名称. 1.XAML Html代码 <Grid x:Name="g1" Background="Red" Margin="10"> <DockPanel x:Name="d1" Ba

利用Aspose.Word控件和Aspose.Cell控件,实现Word文档和Excel文档的模板化导出

我们知道,一般都导出的Word文档或者Excel文档,基本上分为两类,一类是动态生成全部文档的内容方式,一种是基于固定模板化的内容输出,后者在很多场合用的比较多,这也是企业报表规范化的一个体现. 我的博客介绍过几篇关于Aspose.Word控件和Aspose.Cell控件的使用操作,如下所示. <使用Aspose.Cell控件实现Excel高难度报表的生成(一)> <使用Aspose.Cell控件实现Excel高难度报表的生成(二)> <使用Aspose.Cell控件实现Ex

开源顺顺表格excel电子表格控件免费下载

顺顺表格开源版是基于Web的类似于微软Excel的网页电子表格控件,是一款Javascript电子表格控件.顺顺表格开源版的源代码开放,可以用于Web报表设计器,Web电子表格编辑器,中国特色的电子表单设计器等. 该Web Excel控件可以和Java/Jsp/Asp.Net集成, 实现更强大的电子表格在线编辑功能. 顺顺表格开源版特色 无限制的行和列(增加删除) 电子表格多单元格操作 单元格不同格式(字体,字号等) 统计函数 无限制undo/redo 下载试用 产品 顺顺表格开源版试用版  (

电子表格控件Spreadsheet 对象方法事件详细介绍

1.ActiveCell:返回代表活动单元格的Range只读对象.2.ActiveSheet:返回代表活动工作表的WorkSheet只读对象.3.ActiveWindow:返回表示当前窗口的Window对象.4.ActiveWorkbook:返回表示打开工作簿的Workbook对象.5.AllowPropertyToolbox:确定用户是否可以在运行时显示“命令和选项”对话框.boolean类型.6.Application:有两种情况,a)应用于OWCLanguageSettings对象时,返回

顺顺网页电子表格控件开源下载

顺顺表格控件是基于Web的类似于微软Excel的网页电子表格控件,是一款Javascript电子表格控件. 顺顺表格的源代码开放,可以用于Web报表设计器,Web电子表格编辑器,中国特色的电子表单设计器等. 该Web Excel控件可以和Java/Jsp/Asp.Net集成, 实现更强大的电子表格在线编辑功能. 顺顺表格是北京龙博中科软件有限公司出品的一款基于B/S构架的Web电子表格控件,功能强大.品质稳定.简单易用,完美兼容Excel.在单元格级别上支持的全面的客户定制,内建上百个计算函数.

利用Delphi TStringGrid控件实现日历排程

在ERP实现排程的模块中,我们希望能直观展现个机台每天的排单情况,一直苦恼Delphi没有合适的控件,没办法,先自己动手. 效果图: 绘制日历关键代码 procedure TForm1.DrawCalender; var iDay, iProcess, days: Integer; row,col:Integer; begin //sgCalender. days := DaysInAMonth(StrToInt(cbbYear.Text), StrToInt(cbbMonth.Text));

利用动画实现控件背景色渐变

1.动画文件: 1 <?xml version="1.0" encoding="utf-8"?> 2 <objectAnimator xmlns:android="http://schemas.android.com/apk/res/android" 3 android:propertyName="backgroundColor" 4 android:duration="5000" 5 a