1
載體本身具有腳本支持
2
可以通過OLE訪問
整體思路
程序通過OLE獲取Excel的Sheet對象
如
#ValueAA# (變量名兩邊加入#號
報表功能實現
首先新建Excel模板
模板保存為template
現在模板有了
下面我們來設計一個簡單的模板分析類(TXlTemplateAnalyzer)
generateReport //套用模板生成最終報表
registerDataSet //在DataSet列表中新增數據集
registerParam //在Param列表中新增變量
removeDataSet //在DataSet列表中刪除數據集
removeParam //在Param列表中刪除變量
SetSheetObject //設置模板的Sheet對象
2
FDataSetList //用於維護數據集列表的私有成員
FParamList //用於維護變量列表的的私有成員
FExcelSheetObject //被操作模板的Sheet對象
FCurrentRow //當前處理的行號
FCurrentCol //當前處理的列號
3
ProcessDataSetElement //處理數據集元素
getTemplateBoundary //獲取邊界索引號
parsorFieldNameFromElement //從模板元素中提取字段名
FindParam //從FParamList中查找特定Name的變量
FindDataSet //從DataSetList中查找特定Name的DataSet
IsTamplateElement //判斷是否為元素
IsDataSetFieldElement //是否為數據字段元素
IsDataSetBeginElement //是否為DataSet起始元素
IsControlTag //是否為控制元素
IsParamElement //是否為變量元素
4
OnParamElement
OnDataSetOperationElement
OnControlElement
OnDataSetFieldElement
OnElement
寫到這裡大家可能已經知道我的用意了
(以下代碼只是描述性的腳本代碼
generateReport:
循環遍歷單元格
FCurrentRow := iRow;
FCurrentCol := iCol;//保存當前正在處理的行列索引號
CellObj := FExcelSheetObject
CellValue := CellValue
if IsTamplateElement(CellValue) //判斷是否為模板元素
begin
if IsDataSetBeginElement(CellValue) then //判斷是否為數據集開始元素
begin
ProcessDataSetElement (CellValue); //處理數據集元素
end;
if IsParamElement then(CellValue) then //判斷是否為變量元素
CellObj
if IsControlTag(CellValue) then
…………………
end;
遍歷循環結束
執行到這裡
ProcessDataSetElement
ADataSet := FindDataSet(CellValue);
for j:=
begin
FExcelSheetObject
FExcelSheetObject
FExcelSheetObject
for i:= FBoundLeft to FBoundLeft do
begin
fieldCellStr := FExcelSheetObject
fieldname := parsorFieldNameFromElement(fieldCellStr); //從元素中解析字段名
FExcelSheetObject
end;
ADataSet
end
FCurrentRow := FCurrentRow + j;
到這裡
TXlTemplateAnalyzer類的是這樣調用
begin
1
templtAnalyzer
templtAnalyzer
templtAnalyzer
templtAnalyzer
templtAnalyzer
2
templtAnalyzer
end;
參考文檔
好了
本人口才不好
From:http://tw.wingwit.com/Article/program/Delphi/201311/8465.html