因为项目需要读取excel的数据,并且可以进行编辑、而且需要进行界面样式的调整,所以进行这个控件的研究。
cxSpreadSheetBook是一个Excel控件,可以读取Excel的数据,并且可以进行控件的单元格进行控制,可以实现合并单元格、设置单元格宽度、设置单元格的字体大小、字体样式、设置单元格文字是否居中等等。下面是技巧

1:首先定义单元格样式

  1.   TStyleValue = (svAlign, svFontName, svSize, svBold, svItalic, svUnderline, svStrikeOut);
  2.   TStyleValueSet = set of TStyleValue;

文字的位置、文字的字体名、大小、是否黑体、是否下划线等等

2:合并单元格

  1. procedure SetMergedStateA(Left, Top, Right,
  2.   Bottom: Integer; IsMerge: Boolean);
  3. var
  4.   ARect: TRect;  
  5. begin  
  6.   with CX_StatResult.ActiveSheet do
  7.   begin
  8.     ARect.Left:=Left;
  9.     ARect.Top:=Top;
  10.     ARect.Right:=Right;
  11.     ARect.Bottom:=Bottom;
  12.     SetMergedState(ARect, True);
  13.   end;
  14. end;
  15.  

使用方法:SetMergedStateA(0,0,15,0,True);

3:设置单元格文字的样式

  1. procedure TfrmStatiWenShu.SetCellsStyle(AValuesSet: TStyleValueSet;
  2.   AAlign: TcxHorzTextAlign; AFontSize: Integer; const AFontName: string;
  3.   AStyles: TFontStyles);
  4.   procedure SetValue(AFlag: TStyleValue; ANeedStyle: TFontStyle;
  5.     var ASetStyles: TFontStyles);
  6.   begin
  7.     if AFlag in AValuesSet then
  8.     begin
  9.       if ANeedStyle in AStyles then
  10.         Include(ASetStyles, ANeedStyle)
  11.       else
  12.         Exclude(ASetStyles, ANeedStyle);
  13.     end;
  14.   end;
  15.  
  16. var
  17.   I, J: Integer;
  18.   AStyle: TFontStyles;
  19.  
  20. begin
  21.   with CX_StatResult do
  22.   try
  23.     BeginUpdate;
  24.     with ActiveSheet do
  25.     begin
  26.       for I := SelectionRect.Left to SelectionRect.Right do
  27.         for J := SelectionRect.Top to SelectionRect.Bottom do
  28.         with GetCellObject(I, J) do
  29.         try
  30.           with Style do
  31.           begin
  32.             AStyle := Font.Style;
  33.             if svFontName in AValuesSet then
  34.               Font.Name := AFontName;
  35.             if svSize in AValuesSet then
  36.               Font.Size := AFontSize;
  37.             if svAlign in AValuesSet then
  38.               HorzTextAlign := AAlign;
  39.             SetValue(svBold, fsBold, AStyle);
  40.             SetValue(svItalic, fsItalic, AStyle);
  41.             SetValue(svUnderline, fsUnderline, AStyle);
  42.             SetValue(svStrikeOut, fsStrikeOut, AStyle);
  43.             Font.Style := AStyle;
  44.           end;
  45.         finally
  46.           Free;
  47.         end;
  48.     end;
  49.   finally
  50.     EndUpdate;
  51.     UpdateControl;
  52.   end;
  53. end;

如下使用:

  1. CX_StatResult.Pages[0].SelectCell(0,0,False);
  2.   SetCellsStyle([svBold,svAlign], haCenter, 0, '', [fsBold]);

首先选择单元格,然后调用SetCellsStyle设置单元格格式

3:控件一个表格也不选择,使用如下语句:

  1. CX_StatResult.Pages[0].SelectCell(-1,-1,False);  


4:设置某一个列的宽度

  1. CX_StatResult.Pages[0].Cols.Size[15]:=70;


5:设置某个单元格的文字

  1. Cell := CX_StatResult.Pages[0].GetCellObject(15, 1);
  2.   Cell.Text:='备注';


6:导入Excel

  1. CX_StatResult.LoadFromFile();