From 89bfc05455475b9575e16fb3d2f05ca04e9f032c Mon Sep 17 00:00:00 2001 From: csh Date: Wed, 22 Feb 2023 10:49:11 +0800 Subject: [PATCH] v1.1.8 --- ExcelFile使用帮助.xlsx | Bin 26732 -> 26799 bytes funcext/TSOffice/TOfficeObj.tsf | 154 ++++++++++++++++++-- funcext/TSOffice/TSDocxFile.tsf | 2 +- funcext/TSOffice/TSExcelFile.tsf | 9 +- funcext/TSOffice/worksheet/xlsxWorkBook.tsf | 11 +- 更新日志.md | 8 + 6 files changed, 169 insertions(+), 15 deletions(-) diff --git a/ExcelFile使用帮助.xlsx b/ExcelFile使用帮助.xlsx index 2de69c912d56490a2a0479bcd4feffebb6bac027..2adfd74b31d184fa29d31a9141f0778194d7f178 100644 GIT binary patch delta 9224 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 delta 9219 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 S{}Xv$`7bgflAQTJF#iXG|EjhC diff --git a/funcext/TSOffice/TOfficeObj.tsf b/funcext/TSOffice/TOfficeObj.tsf index b6bc329..619c9bb 100644 --- a/funcext/TSOffice/TOfficeObj.tsf +++ b/funcext/TSOffice/TOfficeObj.tsf @@ -1,4 +1,4 @@ -// Version 1.1.7 +// Version 1.1.8 Function TOfficeObj(n); Begin @@ -9488,10 +9488,140 @@ type TCalcPr=class(NodeInfo) RootObj := node; End; + Property CalCId read readXMLCalCId write writeXMLCalCId; + Function readXMLCalCId(); + Begin + tmpVal := class(TSXml).Utf8ToCurCodePage(Value('CalCId')); + if not ifNil(tmpVal) then return tmpVal; + return class(TSXml).Utf8ToCurCodePage(XMLCalCId); + End; + + Function writeXMLCalCId(str); + Begin + XMLCalCId := class(TSXml).CurCodePageToUtf8(str); + End; + + Property CalcMode read readXMLCalcMode write writeXMLCalcMode; + Function readXMLCalcMode(); + Begin + tmpVal := class(TSXml).Utf8ToCurCodePage(Value('CalcMode')); + if not ifNil(tmpVal) then return tmpVal; + return class(TSXml).Utf8ToCurCodePage(XMLCalcMode); + End; + + Function writeXMLCalcMode(str); + Begin + XMLCalcMode := class(TSXml).CurCodePageToUtf8(str); + End; + + Property RefMode read readXMLRefMode write writeXMLRefMode; + Function readXMLRefMode(); + Begin + tmpVal := class(TSXml).Utf8ToCurCodePage(Value('RefMode')); + if not ifNil(tmpVal) then return tmpVal; + return class(TSXml).Utf8ToCurCodePage(XMLRefMode); + End; + + Function writeXMLRefMode(str); + Begin + XMLRefMode := class(TSXml).CurCodePageToUtf8(str); + End; + + Property Iterate read readXMLIterate write writeXMLIterate; + Function readXMLIterate(); + Begin + tmpVal := class(TSXml).Utf8ToCurCodePage(Value('Iterate')); + if not ifNil(tmpVal) then return tmpVal; + return class(TSXml).Utf8ToCurCodePage(XMLIterate); + End; + + Function writeXMLIterate(str); + Begin + XMLIterate := class(TSXml).CurCodePageToUtf8(str); + End; + + Property IterateCount read readXMLIterateCount write writeXMLIterateCount; + Function readXMLIterateCount(); + Begin + tmpVal := class(TSXml).Utf8ToCurCodePage(Value('IterateCount')); + if not ifNil(tmpVal) then return tmpVal; + return class(TSXml).Utf8ToCurCodePage(XMLIterateCount); + End; + + Function writeXMLIterateCount(str); + Begin + XMLIterateCount := class(TSXml).CurCodePageToUtf8(str); + End; + + Property IterateDelta read readXMLIterateDelta write writeXMLIterateDelta; + Function readXMLIterateDelta(); + Begin + tmpVal := class(TSXml).Utf8ToCurCodePage(Value('IterateDelta')); + if not ifNil(tmpVal) then return tmpVal; + return class(TSXml).Utf8ToCurCodePage(XMLIterateDelta); + End; + + Function writeXMLIterateDelta(str); + Begin + XMLIterateDelta := class(TSXml).CurCodePageToUtf8(str); + End; + + Property CalcOnSave read readXMLCalcOnSave write writeXMLCalcOnSave; + Function readXMLCalcOnSave(); + Begin + tmpVal := class(TSXml).Utf8ToCurCodePage(Value('CalcOnSave')); + if not ifNil(tmpVal) then return tmpVal; + return class(TSXml).Utf8ToCurCodePage(XMLCalcOnSave); + End; + + Function writeXMLCalcOnSave(str); + Begin + XMLCalcOnSave := class(TSXml).CurCodePageToUtf8(str); + End; + + Property FullPrecision read readXMLFullPrecision write writeXMLFullPrecision; + Function readXMLFullPrecision(); + Begin + tmpVal := class(TSXml).Utf8ToCurCodePage(Value('FullPrecision')); + if not ifNil(tmpVal) then return tmpVal; + return class(TSXml).Utf8ToCurCodePage(XMLFullPrecision); + End; + + Function writeXMLFullPrecision(str); + Begin + XMLFullPrecision := class(TSXml).CurCodePageToUtf8(str); + End; + + Property ConCurrentCalc read readXMLConCurrentCalc write writeXMLConCurrentCalc; + Function readXMLConCurrentCalc(); + Begin + tmpVal := class(TSXml).Utf8ToCurCodePage(Value('ConCurrentCalc')); + if not ifNil(tmpVal) then return tmpVal; + return class(TSXml).Utf8ToCurCodePage(XMLConCurrentCalc); + End; + + Function writeXMLConCurrentCalc(str); + Begin + XMLConCurrentCalc := class(TSXml).CurCodePageToUtf8(str); + End; + + Property ConCurrentManualCount read readXMLConCurrentManualCount write writeXMLConCurrentManualCount; + Function readXMLConCurrentManualCount(); + Begin + tmpVal := class(TSXml).Utf8ToCurCodePage(Value('ConCurrentManualCount')); + if not ifNil(tmpVal) then return tmpVal; + return class(TSXml).Utf8ToCurCodePage(XMLConCurrentManualCount); + End; + + Function writeXMLConCurrentManualCount(str); + Begin + XMLConCurrentManualCount := class(TSXml).CurCodePageToUtf8(str); + End; + Function GetAttrs(); override; Begin HandleAttrs(); - return array(("CalCId", "calcId", CalCId, ""),("CalcMode", "calcMode", CalcMode, ""),("RefMode", "refMode", RefMode, ""),("Iterate", "iterate", Iterate, ""),("IterateCount", "iterateCount", IterateCount, ""),("IterateDelta", "iterateDelta", IterateDelta, ""),("CalcOnSave", "calcOnSave", CalcOnSave, ""),("FullPrecision", "fullPrecision", FullPrecision, ""),("ConCurrentCalc", "conCurrentCalc", ConCurrentCalc, ""),("ConCurrentManualCount", "conCurrentManualCount", ConCurrentManualCount, "")) union ExtAttr; + return array(("CalCId", "calcId", XMLCalCId, ""),("CalcMode", "calcMode", XMLCalcMode, ""),("RefMode", "refMode", XMLRefMode, ""),("Iterate", "iterate", XMLIterate, ""),("IterateCount", "iterateCount", XMLIterateCount, ""),("IterateDelta", "iterateDelta", XMLIterateDelta, ""),("CalcOnSave", "calcOnSave", XMLCalcOnSave, ""),("FullPrecision", "fullPrecision", XMLFullPrecision, ""),("ConCurrentCalc", "conCurrentCalc", XMLConCurrentCalc, ""),("ConCurrentManualCount", "conCurrentManualCount", XMLConCurrentManualCount, "")) union ExtAttr; End; Function GetChildren(); override; @@ -9501,16 +9631,16 @@ type TCalcPr=class(NodeInfo) End; //Attributes - CalCId; - CalcMode; - RefMode; - Iterate; - IterateCount; - IterateDelta; - CalcOnSave; - FullPrecision; - ConCurrentCalc; - ConCurrentManualCount; + XMLCalCId; + XMLCalcMode; + XMLRefMode; + XMLIterate; + XMLIterateCount; + XMLIterateDelta; + XMLCalcOnSave; + XMLFullPrecision; + XMLConCurrentCalc; + XMLConCurrentManualCount; //Nodes End; diff --git a/funcext/TSOffice/TSDocxFile.tsf b/funcext/TSOffice/TSDocxFile.tsf index 2301691..265de7c 100644 --- a/funcext/TSOffice/TSDocxFile.tsf +++ b/funcext/TSOffice/TSDocxFile.tsf @@ -1,4 +1,4 @@ -// Version 1.1.7 +// Version 1.1.8 Type TSDocxFile = Class ///Version: V1.0 2022-09-20 diff --git a/funcext/TSOffice/TSExcelFile.tsf b/funcext/TSOffice/TSExcelFile.tsf index 155d124..1aa8f83 100644 --- a/funcext/TSOffice/TSExcelFile.tsf +++ b/funcext/TSOffice/TSExcelFile.tsf @@ -1,4 +1,4 @@ -// Version 1.1.7 +// Version 1.1.8 Type TSExcelFile = Class ///Version: V1.0 2022-08-08 @@ -884,6 +884,13 @@ Type TSExcelFile = Class return workbook_.SetCalcOptions(calcPr); End; + ///获取工作簿计算选项 + ///返回: TCalcPr对象 + Function GetCaclOptions(); + Begin + return workbook_.GetCaclOptions(); + End; + Function WorkBook(); Begin return workbook_; diff --git a/funcext/TSOffice/worksheet/xlsxWorkBook.tsf b/funcext/TSOffice/worksheet/xlsxWorkBook.tsf index ab7bfbb..1ae43fa 100644 --- a/funcext/TSOffice/worksheet/xlsxWorkBook.tsf +++ b/funcext/TSOffice/worksheet/xlsxWorkBook.tsf @@ -1235,7 +1235,16 @@ Type xlsxWorkBook = Class if ifObj(calc_node) then workbook_node.DeleteChild(calc_node); calcPr.calcId := "191029"; workbook_node.InsertAfterChild(sheet_node, calcPr.Marshal()); - End + End; + + Function GetCaclOptions(); + Begin + workbook_xml := GetXmlFileObj('xl/workbook.xml'); + node := workbook_xml.FirstChildElement('workbook').FirstChildElement('calcPr'); + calcPr := TOfficeObj('TCalcPr'); + calcPr.RootObj := node; + return calcPr; + End; private Function generateRow(c1, c2, r); diff --git a/更新日志.md b/更新日志.md index fd46e4c..828b2ae 100644 --- a/更新日志.md +++ b/更新日志.md @@ -1,5 +1,13 @@ # 更新日志 +## 2023-2-22 + +### V1.1.8 + +#### excel + +1. 新增`GetCalcOptios` + ## 2023-2-21 ### V1.1.7