赞
踩
XLSReadWriteII控件的升级
一直使用XLSReadWriteII4,编制了相关的函数,可以通过XLSReadWriteII4,生成EXCEL报表。但是,近期网站通过EXCEL上传数据,需要EXCEL2007版本的文件(后缀 xslx)。XLSReadWriteII4只能生成EXCEL97版。升级到XLSReadWriteII6,原代码大致修改如下:
一、单元
原:
- uses
- XLSReadWriteII4, XLSFonts4, BIFFRecsII4, XLSRange4, SheetData4, Rows4, Columns4,
- FormattedObj4, XLSUtils4, CellFormats4, CellStorage4, MergedCells4, Cell4,
- XLSDbRead4, XLSNames4,
改:
- uses
- Xc12Utils5, XLSUtils5, XLSNames5, XLSSheetData5, XLSReadWriteII5,
- XLSCellMMU5, XLSDbRead5, Xc12Manager5, Xc12DataStyleSheet5, XLSFormattedObj5,
- Xc12DataWorksheet5,
- XLSComment5, XLSDrawing5, Xc12Utils5, XLSSheetData5, XLSCmdFormat5;
由于版本不同单元文件名不同,使得XLSReadWriteII4与XLSReadWriteII5 6,可以同时使用。建议版本升级后,删除旧版本文件(搜索目录)。
二、对象的变化
原:
- TSheet
- TCellHorizAlignment; // 水平对齐
- TCellVertAlignment; // 垂直对齐
- TCellFontStyles; // 字体属性
改:
- TXLSWorksheet;
- TXc12HorizAlignment; // 水平对齐
- TXc12VertAlignment; // 垂直对齐
- TXc12FontStyles; // 字体属性
四、合并单元
原:
- With Sheet.Range.ItemsRef[CellS+':'+Cells1] do
- begin
- Merged:=true; // 合并单元 属性已取消
- FontName := FontN;
- FontSize := FontI;
- FontStyle:= FontS;
- HorizAlignment:=Hsee;
- VertAlignment:=Vsee;
- end;
改:
- var iMergedCol1,iMergedRow1,iMergedCol2,iMergedRow2 : integer; // 定义合并Cell
-
- With Sheet.Range.ItemsRef[CellS+':'+Cells1] do
- begin
- with XLS.Sheets[0].MergedCells.Add do
- begin
- iMergedCol1:=TextToCol('A'); // 列1
- iMergedRow1:=0; // 行1 -1 0 to Count-1
- iMergedCol2:=TextToCol(LastS); // 列2
- iMergedRow2:=0; // 行2 -1 0 to Count-1
- Col1 := iMergedCol1;
- Row1 := iMergedRow1;
- Col2 := iMergedCol2;
- Row2 := iMergedRow2;
- end;
- end;
五、取消指定行的有效范围,保留列的有效范围
- XLS.Sheets[0].Rows.AddIfNone(0,Top+5); // 设置Rows的范围 已取消
-
六、Sheet
原Sheet可以引用,现需要Sheets引用:
- XLS.Sheets[0].AsString[19,0]:= '其他';
- XLS.Sheets[0].AsString[20,0]:= '准予扣除的捐赠额';
- XLS.Sheets[0].AsString[21,0]:= '减免税额';
七、重复打印
原
- with XLS.InternalNames.Add do begin // 重复打印标题
- BuiltInName:=bnPrintTitles;
- Definition:='表一!$A$1:$IV$3';
- end;
现
XLS.InternalNames.Add('Print_Title',XLS.Sheets[0].Name+'!$A$C,'+XLS.Sheets[0].Name+'!$1$3',XLS.Sheets[0].Name);
八、加入EXCEL版本信息
XLS.Version := xvExcel2007; // EXCEL版本
九
- With XLS.Sheets[0].Range.ItemsRef['A4:'+LastS+IntToStr(Top-1+4)] do // 区域格式设置
- begin
- FontName:='宋体';
- FontSize := 11;
- HorizAlignment:=chaCenter;
- VertAlignment:=cvaCenter;
- BorderLeftStyle := cbsMedium;
- BorderLeftColor := xcBlack; // xcGreen;
- BorderTopStyle := cbsMedium;
- BorderTopColor := xcBlack;
- BorderRightStyle := cbsMedium;
- BorderRightColor := xcBlack;
- BorderBottomStyle := cbsMedium;
- BorderBottomColor := xcBlack;
- BorderInsideVertStyle:=cbsThin; // 内竖线
- BorderInsideVertColor:=xcBlack; // 内竖线
- BorderInsideHorizStyle:=cbsThin; // 水平线
- BorderInsideHorizColor:=xcBlack; // 水平线
- end;
改为:
- With XLS.Sheets[0].Range.ItemsRef['A4:'+LastS+IntToStr(Top-1+4)] do // 区域格式设置
- begin
- FontName:='宋体';
- FontSize := 11;
- HorizAlignment:=chaCenter;
- VertAlignment:=cvaCenter;
- BorderLeftStyle := cbsThin; // cbsMedium cbsThin
- BorderLeftColor := clBlack;
- BorderTopStyle := cbsThin; // cbsMedium;
- BorderTopColor := clBlack;
- BorderRightStyle := cbsThin; // cbsMedium;
- BorderRightColor := clBlack;
- BorderBottomStyle := cbsThin; // cbsMedium;
- BorderBottomColor := clBlack;
- BorderInsideVertStyle:=cbsThin; // 内竖线
- BorderInsideVertColor:=clBlack; // 内竖线
- BorderInsideHorizStyle:=cbsThin; // 水平线
- BorderInsideHorizColor:=clBlack; // 水平线
- end;
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。