diff --git a/Demo/excel_demo.tsl b/Demo/excel_demo.tsl index 6bf19b5..e03bb94 100644 --- a/Demo/excel_demo.tsl +++ b/Demo/excel_demo.tsl @@ -519,12 +519,15 @@ println("[success] ProtectSheet"); // SetDefaultFont font := tofficeobj('tfont'); -font.name := '黑体'; -font.size := 13; -font.themecolor := 1; +font.Name := '黑体'; +font.Size := 13; +font.ThemeColor := 1; excel.SetDefaultFont(font); println("[success] SetDefaultFont"); +tfont := excel.GetDefaultFont(); +println("[success] GetDefaultFont , name = {}, size = {}, themecolor = {}", tfont.Name, tfont.Size, tfont.ThemeColor); + [err, errmsg] := excel.saveas("", "d:\\temp\\test.xlsx"); println("saveas : {}", err); diff --git a/DocxFile使用帮助.docx b/DocxFile使用帮助.docx index b0f3a27..55814e7 100644 Binary files a/DocxFile使用帮助.docx and b/DocxFile使用帮助.docx differ diff --git a/ExcelFile使用帮助.xlsx b/ExcelFile使用帮助.xlsx index 5c81189..64814ff 100644 Binary files a/ExcelFile使用帮助.xlsx and b/ExcelFile使用帮助.xlsx differ diff --git a/Linux-aarch64/liboffice_plugin.so b/Linux-aarch64/liboffice_plugin.so index edadff3..6cff234 100644 Binary files a/Linux-aarch64/liboffice_plugin.so and b/Linux-aarch64/liboffice_plugin.so differ diff --git a/Linux-x86_64/liboffice_plugin.so b/Linux-x86_64/liboffice_plugin.so index c76ffdc..cb35472 100644 Binary files a/Linux-x86_64/liboffice_plugin.so and b/Linux-x86_64/liboffice_plugin.so differ diff --git a/Windows-X64/office_plugin.dll b/Windows-X64/office_plugin.dll index 469bad2..2593b1d 100644 Binary files a/Windows-X64/office_plugin.dll and b/Windows-X64/office_plugin.dll differ diff --git a/funcext/TSOffice/TOfficeObj.tsf b/funcext/TSOffice/TOfficeObj.tsf index b8212ab..7be573a 100644 --- a/funcext/TSOffice/TOfficeObj.tsf +++ b/funcext/TSOffice/TOfficeObj.tsf @@ -1,5 +1,4 @@ -// Version 1.1.3 - +Version 1.1.4 Function TOfficeObj(n); Begin case lowercase(n) of @@ -337,6 +336,136 @@ type TFont=class(NodeInfo) RootObj := node; End; + Property Name read readXMLName write writeXMLName; + Function readXMLName(); + Begin + tmpVal := class(TSXml).Utf8ToCurCodePage(Value('Name')); + if not ifNil(tmpVal) then return tmpVal; + return class(TSXml).Utf8ToCurCodePage(XMLName); + End; + + Function writeXMLName(str); + Begin + XMLName := class(TSXml).CurCodePageToUtf8(str); + End; + + Property Size read readXMLSize write writeXMLSize; + Function readXMLSize(); + Begin + tmpVal := class(TSXml).Utf8ToCurCodePage(Value('Size')); + if not ifNil(tmpVal) then return tmpVal; + return class(TSXml).Utf8ToCurCodePage(XMLSize); + End; + + Function writeXMLSize(str); + Begin + XMLSize := class(TSXml).CurCodePageToUtf8(str); + End; + + Property Bold read readXMLBold write writeXMLBold; + Function readXMLBold(); + Begin + tmpVal := class(TSXml).Utf8ToCurCodePage(Value('Bold')); + if not ifNil(tmpVal) then return tmpVal; + return class(TSXml).Utf8ToCurCodePage(XMLBold); + End; + + Function writeXMLBold(str); + Begin + XMLBold := class(TSXml).CurCodePageToUtf8(str); + End; + + Property Italic read readXMLItalic write writeXMLItalic; + Function readXMLItalic(); + Begin + tmpVal := class(TSXml).Utf8ToCurCodePage(Value('Italic')); + if not ifNil(tmpVal) then return tmpVal; + return class(TSXml).Utf8ToCurCodePage(XMLItalic); + End; + + Function writeXMLItalic(str); + Begin + XMLItalic := class(TSXml).CurCodePageToUtf8(str); + End; + + Property Color read readXMLColor write writeXMLColor; + Function readXMLColor(); + Begin + tmpVal := class(TSXml).Utf8ToCurCodePage(Value('Color')); + if not ifNil(tmpVal) then return tmpVal; + return class(TSXml).Utf8ToCurCodePage(XMLColor); + End; + + Function writeXMLColor(str); + Begin + XMLColor := class(TSXml).CurCodePageToUtf8(str); + End; + + Property ThemeColor read readXMLThemeColor write writeXMLThemeColor; + Function readXMLThemeColor(); + Begin + tmpVal := class(TSXml).Utf8ToCurCodePage(Value('ThemeColor')); + if not ifNil(tmpVal) then return tmpVal; + return class(TSXml).Utf8ToCurCodePage(XMLThemeColor); + End; + + Function writeXMLThemeColor(str); + Begin + XMLThemeColor := class(TSXml).CurCodePageToUtf8(str); + End; + + Property Strikethrough read readXMLStrikethrough write writeXMLStrikethrough; + Function readXMLStrikethrough(); + Begin + tmpVal := class(TSXml).Utf8ToCurCodePage(Value('Strikethrough')); + if not ifNil(tmpVal) then return tmpVal; + return class(TSXml).Utf8ToCurCodePage(XMLStrikethrough); + End; + + Function writeXMLStrikethrough(str); + Begin + XMLStrikethrough := class(TSXml).CurCodePageToUtf8(str); + End; + + Property Script read readXMLScript write writeXMLScript; + Function readXMLScript(); + Begin + tmpVal := class(TSXml).Utf8ToCurCodePage(Value('Script')); + if not ifNil(tmpVal) then return tmpVal; + return class(TSXml).Utf8ToCurCodePage(XMLScript); + End; + + Function writeXMLScript(str); + Begin + XMLScript := class(TSXml).CurCodePageToUtf8(str); + End; + + Property Charset read readXMLCharset write writeXMLCharset; + Function readXMLCharset(); + Begin + tmpVal := class(TSXml).Utf8ToCurCodePage(Value('Charset')); + if not ifNil(tmpVal) then return tmpVal; + return class(TSXml).Utf8ToCurCodePage(XMLCharset); + End; + + Function writeXMLCharset(str); + Begin + XMLCharset := class(TSXml).CurCodePageToUtf8(str); + End; + + Property Underline read readXMLUnderline write writeXMLUnderline; + Function readXMLUnderline(); + Begin + tmpVal := class(TSXml).Utf8ToCurCodePage(Value('Underline')); + if not ifNil(tmpVal) then return tmpVal; + return class(TSXml).Utf8ToCurCodePage(XMLUnderline); + End; + + Function writeXMLUnderline(str); + Begin + XMLUnderline := class(TSXml).CurCodePageToUtf8(str); + End; + Function GetAttrs(); override; Begin HandleAttrs(); @@ -346,16 +475,16 @@ type TFont=class(NodeInfo) Function GetChildren(); override; Begin HandleChildren(); - return array(("field":"FontName","name":"name","obj":FontName,"attrEx":"","nodeType":"","attrName":"", "desc":"", "class":"") - ,("field":"Size","name":"sz","obj":Size,"attrEx":"","nodeType":"","attrName":"", "desc":"", "class":"") - ,("field":"Bold","name":"b","obj":Bold,"attrEx":"","nodeType":"empty","attrName":"", "desc":"", "class":"") - ,("field":"Italic","name":"i","obj":Italic,"attrEx":"","nodeType":"empty","attrName":"", "desc":"", "class":"") - ,("field":"Color","name":"color","obj":Color,"attrEx":"","nodeType":"","attrName":"rgb", "desc":"", "class":"") - ,("field":"ThemeColor","name":"color","obj":ThemeColor,"attrEx":"theme","nodeType":"","attrName":"", "desc":"", "class":"") - ,("field":"Strikethrough","name":"strike","obj":Strikethrough,"attrEx":"","nodeType":"empty","attrName":"", "desc":"", "class":"") - ,("field":"Script","name":"vertAlign","obj":Script,"attrEx":"","nodeType":"","attrName":"", "desc":"", "class":"") - ,("field":"Charset","name":"charset","obj":Charset,"attrEx":"","nodeType":"","attrName":"", "desc":"", "class":"") - ,("field":"Underline","name":"u","obj":Underline,"attrEx":"","nodeType":"empty_string","attrName":"", "desc":"", "class":"") + return array(("field":"Name","name":"name","obj":XMLName,"attrEx":"","nodeType":"","attrName":"", "desc":"", "class":"") + ,("field":"Size","name":"sz","obj":XMLSize,"attrEx":"","nodeType":"","attrName":"", "desc":"", "class":"") + ,("field":"Bold","name":"b","obj":XMLBold,"attrEx":"","nodeType":"empty","attrName":"", "desc":"", "class":"") + ,("field":"Italic","name":"i","obj":XMLItalic,"attrEx":"","nodeType":"empty","attrName":"", "desc":"", "class":"") + ,("field":"Color","name":"color","obj":XMLColor,"attrEx":"","nodeType":"","attrName":"rgb", "desc":"", "class":"") + ,("field":"ThemeColor","name":"color","obj":XMLThemeColor,"attrEx":"theme","nodeType":"","attrName":"", "desc":"", "class":"") + ,("field":"Strikethrough","name":"strike","obj":XMLStrikethrough,"attrEx":"","nodeType":"empty","attrName":"", "desc":"", "class":"") + ,("field":"Script","name":"vertAlign","obj":XMLScript,"attrEx":"","nodeType":"","attrName":"", "desc":"", "class":"") + ,("field":"Charset","name":"charset","obj":XMLCharset,"attrEx":"","nodeType":"","attrName":"", "desc":"", "class":"") + ,("field":"Underline","name":"u","obj":XMLUnderline,"attrEx":"","nodeType":"empty_string","attrName":"", "desc":"", "class":"") ,("field":"FontStyle","name":"fontstyle","obj":FontStyle,"attrEx":"","nodeType":"","attrName":"", "desc":"", "class":"") ,("field":"OutlineFont","name":"outlinefont","obj":OutlineFont,"attrEx":"","nodeType":"","attrName":"", "desc":"", "class":"") ,("field":"Shadow","name":"shadow","obj":Shadow,"attrEx":"","nodeType":"","attrName":"", "desc":"", "class":"") @@ -369,26 +498,19 @@ type TFont=class(NodeInfo) ) union ExtNodes; End; - Property Name write writeName; - Function writeName(n); - Begin - nName := class(TSXml).CurCodePageToUtf8(n); - FontName := nName; - End; - //Attributes //Nodes - FontName; - Size; - Bold; - Italic; - Color; - ThemeColor; - Strikethrough; - Script; - Charset; - Underline; + XMLName; + XMLSize; + XMLBold; + XMLItalic; + XMLColor; + XMLThemeColor; + XMLStrikethrough; + XMLScript; + XMLCharset; + XMLUnderline; FontStyle; OutlineFont; Shadow; @@ -14176,3 +14298,5 @@ private middlePosition; End + + diff --git a/funcext/TSOffice/TSDocxFile.tsf b/funcext/TSOffice/TSDocxFile.tsf index 8fba175..4e7c106 100644 --- a/funcext/TSOffice/TSDocxFile.tsf +++ b/funcext/TSOffice/TSDocxFile.tsf @@ -1,5 +1,4 @@ -// Version 1.1.3 - +Version 1.1.4 Type TSDocxFile = Class ///Version: V1.0 2022-09-20 ///适用于 Microsoft Word docx格式文件 @@ -466,3 +465,4 @@ private numberingObj_; DocPrId_; End; + diff --git a/funcext/TSOffice/TSExcelFile.tsf b/funcext/TSOffice/TSExcelFile.tsf index c32545f..40e08a7 100644 --- a/funcext/TSOffice/TSExcelFile.tsf +++ b/funcext/TSOffice/TSExcelFile.tsf @@ -1,5 +1,4 @@ -// Version 1.1.3 - +Version 1.1.4 Type TSExcelFile = Class ///Version: V1.0 2022-08-08 ///适用于 Microsoft Excel? 2007 及以上版本创建的电子表格文档。支持 XLSX / XLSM / XLTM / XLTX 等多种文档格式。 @@ -839,6 +838,13 @@ Type TSExcelFile = Class return workbook_.SetDefaultFont(font); End; + ///获取默认字体 + ///返回: TFont对象 + Function GetDefaultFont(); + Begin + return workbook_.GetDefaultFont(); + End; + Function WorkBook(); Begin return workbook_; @@ -893,3 +899,4 @@ private workbook_; //WorkBook对象 objMgr_; //各种对象缓存、管理 End; + diff --git a/funcext/TSOffice/document/TNumbering.tsf b/funcext/TSOffice/document/TNumbering.tsf index cb8bfbb..b254321 100644 --- a/funcext/TSOffice/document/TNumbering.tsf +++ b/funcext/TSOffice/document/TNumbering.tsf @@ -209,7 +209,7 @@ Type TNumbering = Class Function _setNsId(o); Begin v := Integer(RandomRange(1000000000,2000000000)); - id := inttohex(v); + id := inttohex(v, 1); if hash_[id] then return _setNsId(o); hash_[id] := 1; diff --git a/funcext/TSOffice/worksheet/xlsxWorkBook.tsf b/funcext/TSOffice/worksheet/xlsxWorkBook.tsf index cf77d62..b1b89ba 100644 --- a/funcext/TSOffice/worksheet/xlsxWorkBook.tsf +++ b/funcext/TSOffice/worksheet/xlsxWorkBook.tsf @@ -1133,6 +1133,16 @@ Type xlsxWorkBook = Class fonts_node.InsertFirstChild(font.Marshal()); End; + Function GetDefaultFont(); + Begin + style_xml := GetXmlFileObj('xl/styles.xml'); + fonts_node := style_xml.FirstChildElement('styleSheet').FirstChildElement('fonts'); + first_node := fonts_node.FirstChildElement('font'); + tfont := TOfficeObj('TFont'); + tfont.RootObj := first_node; + return tfont; + End; + private Function generateRow(c1, c2, r); Begin diff --git a/更新日志.md b/更新日志.md index cd17c58..ef4fd8a 100644 --- a/更新日志.md +++ b/更新日志.md @@ -1,5 +1,18 @@ # 更新日志 +## 2023-2-2 + +### V1.1.4 + +#### word + +1. 修复文本框插入图片兼容性问题 +2. 修复项目符号问题 + +#### excel + +1. 新增`GetDefaultFont` + ## 2023-2-1 ### V1.1.3