dephi TdxSpreadSheet,TdxSpreadSheetReportDesigner ,TdxSpreadSheetFormulaBar "表格三兄弟"组件的运用

组件明细:

 

TdxSpreadSheet基本上还原了EXCEL的基本功能,用户可以像EXCEL一样正常操作这个控件,比如控件下ctrl+1也能调出单元格属性设置.

另外,就算用户电脑上没有安装EXCEL,程序依然能够正常运行.

简单编辑时用着还行,代码操作的太复杂的话就算了,不建议使用.

dxSpreadSheet1.SheetCount : 工作表总数

dxSpreadSheet1.AddSheet('新工作表'):  插入新工作表,名称为'新工作表'

dxSpreadSheet1.Sheets[0].Caption: 第一个工作表的名称

dxSpreadSheet1.ActiveSheet.caption: 正在编辑(激活)的工作表的名称.

dxSpreadSheet1.Sheets[1].Active:=True   激活第二个工作表(前提是有第二个表,否则出错)

dxSpreadSheet1.ActiveSheetIndex:= 1   作用和上一条相同.

//根据字符串,返回工作表对象,然后激活它.
var
str:string; mySheet:TdxSpreadSheetCustomView; begin str:='工作表名'; mySheet := dxSpreadSheet1.GetSheetByName(str);     //容错代码自己加 mySheet.Active:=True; end;

 

  

//注意,如果你在最后一行往下的位置,或者最后一列往右的位置,编辑了,然后又清空掉的话,最后一行或者最后一列的位置,都会以这个单元格为准,空值和不存在,是两个概念.
dxSpreadSheet1.ActiveSheetAsTable.Rows.Count  表格的行数
dxSpreadSheet1.ActiveSheetAsTable.Columns.Count  表格的列数

 

 str:= dxSpreadSheet1.ActiveSheetAsTable.Cell[1,1].AsString;  获取B2单元格的值. ( A1坐标为   [0,0]   ),和取数据库数据一样,要注意数据类型.


//无论是读取值,还是写入值,都要首先判断单元格是否为空,如果为空的话,读写都会出问题.
//
读取值 procedure TForm1.dxBarButton1Click(Sender: TObject); var Cell: TdxSpreadSheetCell; begin Cell := dxSpreadSheet1.ActiveSheetAsTable.Cells[0, 1]; if Cell <> nil then ShowMessage(Cell.AsString) else ShowMessage('B2无内容'); end;
// 写入值 procedure TForm1.dxBarButton2Click(Sender: TObject); var newCell: TdxSpreadSheetCell; begin newCell := dxSpreadSheet1.ActiveSheetAsTable.Cells[1, 1]; if newCell = nil then newCell := dxSpreadSheet1.ActiveSheetAsTable.CreateCell(1, 1); newCell.AsString := '又是新的一天'; end;

 

2024-04-17 更新:

TdxSpreadSheetFormulaBar  控件的应用

这个超简单,设置关联的表就可以了.

 

TdxSpreadSheetReportDesigner 控件的运用.

 这个控件是用来设置报表的.使用起来有点麻烦,请大家按步骤先走一遍,其他的再慢慢研究

1.这玩意需要自己创建一个模板(EXCEL文件),并且有严格的格式要求,我先给大家打个样    

设置完成后,把模板(就一普通xlsx/xls后缀的EXCEL文件)保存起来备用.

然后是在delphi中插入TdxSpreadSheetReportDesigner 控件,给它关联一个数据集,然后它的宽和高都设置为0,且不可见即可 

整体设置图如下:

 以下是"载入数据"按钮的代码:

procedure TForm1.Button1Click(Sender: TObject);
begin
  dxSpreadSheetReportDesigner1.LoadFromFile('..\..\报表模板.xlsx');  //载入模板文件.同级目录是LoadFromFile('报表模板.xlsx'),我这里是不同级的
  dxSpreadSheet1.ClearAll;  //清空表格
  dxSpreadSheetReportDesigner1.Build(dxSpreadSheet1);    //输出到表格
end;

效果如下:

 说说打印功能.

我们需要手动加入一个 dxPrnDev  单元,以使用它的方法来获取打印机列表

uses 
    dxPrnDev;

procedure TForm1.FormCreate(Sender: TObject);
begin
    cxComboBox1.Text :='请选择一部打印机' ;
    cxComboBox1.Properties.Items.Clear ;
    cxComboBox1.Properties.Items :=dxPrintDevice.Printers;     //获取打印机列表
end;

然后是打印功能.打印需要添加一个 TdxComponentPrinter 控件.添加之后,先什么都别管.在图标上右键,来创建一个 TdxSpreadSheetReportLnk 类

 然后回过头来设置一下TdxComponentPrinter控件的CurrentLink属性为刚刚创建的 dxComponentPrinter1Link1,现在你的打印工作已经可以正常操作了.

 

 打印功能的核心代码也简单:

procedure TForm1.Button2Click(Sender: TObject);
begin
  if cxComboBox1.Text = '请选择一部打印机' then
  begin
    Application.MessageBox('请选择一部打印机', '', MB_OK);
    Exit;
  end;

  dxPrintDevice.PrinterIndex := cxcombobox1.ItemIndex;  //设置打印机索引
  dxComponentPrinter1Link1.Preview();   //打印预览
//  dxComponentPrinter1Link1.Print(true);    //显示打印机选择界面
//  dxComponentPrinter1Link1.Print(false);   //文档上说这句代码是直接打印,无交互.但我实际上操作时是有交互的.

end;

 预览效果如图:

 

posted @ 2022-09-08 15:01  一曲轻扬  阅读(1347)  评论(1)    收藏  举报