因为项目需要读取excel的数据,并且可以进行编辑、而且需要进行界面样式的调整,所以进行这个控件的研究。
cxSpreadSheetBook是一个Excel控件,可以读取Excel的数据,并且可以进行控件的单元格进行控制,可以实现合并单元格、设置单元格宽度、设置单元格的字体大小、字体样式、设置单元格文字是否居中等等。下面是技巧
1:首先定义单元格样式
- TStyleValue = (svAlign, svFontName, svSize, svBold, svItalic, svUnderline, svStrikeOut);
- TStyleValueSet = set of TStyleValue;
文字的位置、文字的字体名、大小、是否黑体、是否下划线等等
2:合并单元格
- procedure SetMergedStateA(Left, Top, Right,
- Bottom: Integer; IsMerge: Boolean);
- var
- ARect: TRect;
- begin
- with CX_StatResult.ActiveSheet do
- begin
- ARect.Left:=Left;
- ARect.Top:=Top;
- ARect.Right:=Right;
- ARect.Bottom:=Bottom;
- SetMergedState(ARect, True);
- end;
- end;
使用方法:SetMergedStateA(0,0,15,0,True);
3:设置单元格文字的样式
- procedure TfrmStatiWenShu.SetCellsStyle(AValuesSet: TStyleValueSet;
- AAlign: TcxHorzTextAlign; AFontSize: Integer; const AFontName: string;
- AStyles: TFontStyles);
- procedure SetValue(AFlag: TStyleValue; ANeedStyle: TFontStyle;
- var ASetStyles: TFontStyles);
- begin
- if AFlag in AValuesSet then
- begin
- if ANeedStyle in AStyles then
- Include(ASetStyles, ANeedStyle)
- else
- Exclude(ASetStyles, ANeedStyle);
- end;
- end;
- var
- I, J: Integer;
- AStyle: TFontStyles;
- begin
- with CX_StatResult do
- try
- BeginUpdate;
- with ActiveSheet do
- begin
- for I := SelectionRect.Left to SelectionRect.Right do
- for J := SelectionRect.Top to SelectionRect.Bottom do
- with GetCellObject(I, J) do
- try
- with Style do
- begin
- AStyle := Font.Style;
- if svFontName in AValuesSet then
- Font.Name := AFontName;
- if svSize in AValuesSet then
- Font.Size := AFontSize;
- if svAlign in AValuesSet then
- HorzTextAlign := AAlign;
- SetValue(svBold, fsBold, AStyle);
- SetValue(svItalic, fsItalic, AStyle);
- SetValue(svUnderline, fsUnderline, AStyle);
- SetValue(svStrikeOut, fsStrikeOut, AStyle);
- Font.Style := AStyle;
- end;
- finally
- Free;
- end;
- end;
- finally
- EndUpdate;
- UpdateControl;
- end;
- end;
如下使用:
- CX_StatResult.Pages[0].SelectCell(0,0,False);
- SetCellsStyle([svBold,svAlign], haCenter, 0, '', [fsBold]);
首先选择单元格,然后调用SetCellsStyle设置单元格格式
3:控件一个表格也不选择,使用如下语句:
- CX_StatResult.Pages[0].SelectCell(-1,-1,False);
4:设置某一个列的宽度
- CX_StatResult.Pages[0].Cols.Size[15]:=70;
5:设置某个单元格的文字
- Cell := CX_StatResult.Pages[0].GetCellObject(15, 1);
- Cell.Text:='备注';
6:导入Excel
- CX_StatResult.LoadFromFile();