diff --git a/funcext/TSOffice/TOfficeObj.tsf b/funcext/TSOffice/TOfficeObj.tsf index 05d25ab..382dff7 100644 --- a/funcext/TSOffice/TOfficeObj.tsf +++ b/funcext/TSOffice/TOfficeObj.tsf @@ -1,4 +1,4 @@ -// Version 1.6.3 +// Version 1.6.4 Function TOfficeObj(n); Begin case lowercase(n) of @@ -10763,15 +10763,15 @@ Type TDocComments = Class End; //w:pPr -// 'w:pStyle', 'w:keepNext', 'w:keepLines', 'w:pageBreakBefore', -// 'w:framePr', 'w:widowControl', 'w:numPr', 'w:suppressLineNumbers', -// 'w:pBdr', 'w:shd', 'w:tabs', 'w:suppressAutoHyphens', 'w:kinsoku', -// 'w:wordWrap', 'w:overflowPunct', 'w:topLinePunct', 'w:autoSpaceDE', -// 'w:autoSpaceDN', 'w:bidi', 'w:adjustRightInd', 'w:snapToGrid', -// 'w:spacing', 'w:ind', 'w:contextualSpacing', 'w:mirrorIndents', -// 'w:suppressOverlap', 'w:jc', 'w:textDirection', 'w:textAlignment', -// 'w:textboxTightWrap', 'w:outlineLvl', 'w:divId', 'w:cnfStyle', -// 'w:rPr', 'w:sectPr', 'w:pPrChange' +// 'w:pStyle', 'w:keepNext', 'w:keepLines', 'w:pageBreakBefore', +// 'w:framePr', 'w:widowControl', 'w:numPr', 'w:suppressLineNumbers', +// 'w:pBdr', 'w:shd', 'w:tabs', 'w:suppressAutoHyphens', 'w:kinsoku', +// 'w:wordWrap', 'w:overflowPunct', 'w:topLinePunct', 'w:autoSpaceDE', +// 'w:autoSpaceDN', 'w:bidi', 'w:adjustRightInd', 'w:snapToGrid', +// 'w:spacing', 'w:ind', 'w:contextualSpacing', 'w:mirrorIndents', +// 'w:suppressOverlap', 'w:jc', 'w:textDirection', 'w:textAlignment', +// 'w:textboxTightWrap', 'w:outlineLvl', 'w:divId', 'w:cnfStyle', +// 'w:rPr', 'w:sectPr', 'w:pPrChange' //w:p Type TWHyperLink = Class(TWHyperLinkImpl) @@ -10852,8 +10852,8 @@ Type TParagraph = Class(DocObject, TParagraphImpl) ///制表位TTabStops对象 ///返回:TTabStops对象 // - // - // + // + // // Function TabStops(); Begin @@ -10952,25 +10952,25 @@ Type TParagraph = Class(DocObject, TParagraphImpl) return new TRun(node); End; - ///在段落对象开头添加TRun对象 - ///返回TRun对象 - Function PrependRun();overload; - Begin + ///在段落对象开头添加TRun对象 + ///返回TRun对象 + Function PrependRun();overload; + Begin node := node_.FirstChildElement('w:r'); node := node_.InsertBeforeChild(node, 'element', 'w:r'); node.InsertFirstChild('element', 'w:rPr'); return new TRun(node); - End; + End; - ///在段落某个TRun对象之前添加TRun对象 + ///在段落某个TRun对象之前添加TRun对象 ///run:TRun对象 - ///返回TRun对象 - Function PrependRun(run);overload; - Begin + ///返回TRun对象 + Function PrependRun(run);overload; + Begin node := node_.InsertBeforeChild(run.Root(), 'element', 'w:r'); node.InsertFirstChild('element', 'w:rPr'); return new TRun(node); - End; + End; ///段落中全部的修改标记(修订删除、修订插入) ///返回:TRevision对象列表,array(TRevision...); @@ -11058,7 +11058,7 @@ Type TParagraph = Class(DocObject, TParagraphImpl) ///判断是否为空段落 ///返回: bool Function Empty(); - Begin + Begin if ifObj(node_) then begin if ifObj(node_.FirstChildElement("w:r")) then return false; @@ -11073,7 +11073,7 @@ Type TParagraph = Class(DocObject, TParagraphImpl) return true; end return false; - End; + End; ///获取当前段落的上一个段落 ///返回:TParagraph对象 @@ -11432,8 +11432,8 @@ Type TPicture = Class(DocObject, TPictureImpl) maxY := 23.0;//垂直方向23cm imageW := image.Width() / 28.346 * ETU; imageH := image.Height() / 28.346 * ETU; - if Width <= 0 and Height <= 0 then Begin //图像缺省大小 - widthVal := imageW; + if Width <= 0 and Height <= 0 then Begin //图像缺省大小 + widthVal := imageW; heightVal := imageH; End else Begin //用户设置了图片尺寸 @@ -11471,7 +11471,7 @@ Type TPicture = Class(DocObject, TPictureImpl) widthVal *= ratio; End; //println('w={}-{},maxx={}, h={}-{},maxh={},ratio={}',integer(imageW),integer(widthVal),15 * ETU, integer(imageH),integer(heightVal),23 * ETU,ratio); - return array(integer(widthVal), integer(heightVal)); + return array(integer(widthVal), integer(heightVal)); End; Image;//图片内容(Binary) @@ -11821,10 +11821,10 @@ private Function getLegendPosition(t); Begin - m := array("bottom": "b", - "left": "l", - "right": "r", - "top": "t", + m := array("bottom": "b", + "left": "l", + "right": "r", + "top": "t", "top_right": "tr"); return m[t]; End; @@ -11982,120 +11982,120 @@ private Function chartValAxCrossBetween(t); Begin m := array( - 'area': 'midCat', - 'areastacked': 'midCat', - 'areapercentstacked': 'midCat', - 'area3d': 'midCat', - 'area3dstacked': 'midCat', - 'area3dpercentstacked': 'midCat', - 'bar': 'between', - 'barstacked': 'between', - 'barpercentstacked': 'between', - 'bar3dclustered': 'between', - 'bar3dstacked': 'between', - 'bar3dpercentstacked': 'between', - 'bar3dconeclustered': 'between', - 'bar3dconestacked': 'between', - 'bar3dconepercentstacked': 'between', - 'bar3dpyramidclustered': 'between', - 'bar3dpyramidstacked': 'between', + 'area': 'midCat', + 'areastacked': 'midCat', + 'areapercentstacked': 'midCat', + 'area3d': 'midCat', + 'area3dstacked': 'midCat', + 'area3dpercentstacked': 'midCat', + 'bar': 'between', + 'barstacked': 'between', + 'barpercentstacked': 'between', + 'bar3dclustered': 'between', + 'bar3dstacked': 'between', + 'bar3dpercentstacked': 'between', + 'bar3dconeclustered': 'between', + 'bar3dconestacked': 'between', + 'bar3dconepercentstacked': 'between', + 'bar3dpyramidclustered': 'between', + 'bar3dpyramidstacked': 'between', 'bar3dpyramidpercentstacked': 'between', - 'bar3dcylinderclustered': 'between', - 'bar3dcylinderstacked': 'between', + 'bar3dcylinderclustered': 'between', + 'bar3dcylinderstacked': 'between', 'bar3dcylinderpercentstacked': 'between', - 'col': 'between', - 'colstacked': 'between', - 'colpercentstacked': 'between', - 'col3d': 'between', - 'col3dclustered': 'between', - 'col3dstacked': 'between', - 'col3dpercentstacked': 'between', - 'col3dcone': 'between', - 'col3dconeclustered': 'between', - 'col3dconestacked': 'between', - 'col3dconepercentstacked': 'between', - 'col3dpyramid': 'between', - 'col3dpyramidclustered': 'between', - 'col3dpyramidstacked': 'between', + 'col': 'between', + 'colstacked': 'between', + 'colpercentstacked': 'between', + 'col3d': 'between', + 'col3dclustered': 'between', + 'col3dstacked': 'between', + 'col3dpercentstacked': 'between', + 'col3dcone': 'between', + 'col3dconeclustered': 'between', + 'col3dconestacked': 'between', + 'col3dconepercentstacked': 'between', + 'col3dpyramid': 'between', + 'col3dpyramidclustered': 'between', + 'col3dpyramidstacked': 'between', 'col3dpyramidpercentstacked': 'between', - 'col3dcylinder': 'between', - 'col3dcylinderclustered': 'between', - 'col3dcylinderstacked': 'between', + 'col3dcylinder': 'between', + 'col3dcylinderclustered': 'between', + 'col3dcylinderstacked': 'between', 'col3dcylinderpercentstacked': 'between', - 'doughnut': 'between', - 'line': 'between', - 'pie': 'between', - 'pie3d': 'between', - 'pieofpiechart': 'between', - 'barofpiechart': 'between', - 'radar': 'between', - 'scatter': 'between', - 'surface3d': 'midCat', - 'wireframesurface3d': 'midCat', - 'contour': 'midCat', - 'wireframecontour': 'midCat', - 'bubble': 'midCat', - 'bubble3d': 'midCat'); + 'doughnut': 'between', + 'line': 'between', + 'pie': 'between', + 'pie3d': 'between', + 'pieofpiechart': 'between', + 'barofpiechart': 'between', + 'radar': 'between', + 'scatter': 'between', + 'surface3d': 'midCat', + 'wireframesurface3d': 'midCat', + 'contour': 'midCat', + 'wireframecontour': 'midCat', + 'bubble': 'midCat', + 'bubble3d': 'midCat'); return m[t]; End; Function chartValAxNumFmtFormatCode(t); Begin m := array( - 'area': 'General', - 'areastacked': 'General', - 'areapercentstacked': '0%', - 'area3d': 'General', - 'area3dstacked': 'General', - 'area3dpercentstacked': '0%', - 'bar': 'General', - 'barstacked': 'General', - 'barpercentstacked': '0%', - 'bar3dclustered': 'General', - 'bar3dstacked': 'General', - 'bar3dpercentstacked': '0%', - 'bar3dconeclustered': 'General', - 'bar3dconestacked': 'General', - 'bar3dconepercentstacked': '0%', - 'bar3dpyramidclustered': 'General', - 'bar3dpyramidstacked': 'General', + 'area': 'General', + 'areastacked': 'General', + 'areapercentstacked': '0%', + 'area3d': 'General', + 'area3dstacked': 'General', + 'area3dpercentstacked': '0%', + 'bar': 'General', + 'barstacked': 'General', + 'barpercentstacked': '0%', + 'bar3dclustered': 'General', + 'bar3dstacked': 'General', + 'bar3dpercentstacked': '0%', + 'bar3dconeclustered': 'General', + 'bar3dconestacked': 'General', + 'bar3dconepercentstacked': '0%', + 'bar3dpyramidclustered': 'General', + 'bar3dpyramidstacked': 'General', 'bar3dpyramidpercentstacked': '0%', - 'bar3dcylinderclustered': 'General', - 'bar3dcylinderstacked': 'General', + 'bar3dcylinderclustered': 'General', + 'bar3dcylinderstacked': 'General', 'bar3dcylinderpercentstacked': '0%', - 'col': 'General', - 'colstacked': 'General', - 'colpercentstacked': '0%', - 'col3d': 'General', - 'col3dclustered': 'General', - 'col3dstacked': 'General', - 'col3dpercentstacked': '0%', - 'col3dcone': 'General', - 'col3dconeclustered': 'General', - 'col3dconestacked': 'General', - 'col3dconepercentstacked': '0%', - 'col3dpyramid': 'General', - 'col3dpyramidclustered': 'General', - 'col3dpyramidstacked': 'General', + 'col': 'General', + 'colstacked': 'General', + 'colpercentstacked': '0%', + 'col3d': 'General', + 'col3dclustered': 'General', + 'col3dstacked': 'General', + 'col3dpercentstacked': '0%', + 'col3dcone': 'General', + 'col3dconeclustered': 'General', + 'col3dconestacked': 'General', + 'col3dconepercentstacked': '0%', + 'col3dpyramid': 'General', + 'col3dpyramidclustered': 'General', + 'col3dpyramidstacked': 'General', 'col3dpyramidpercentstacked': '0%', - 'col3dcylinder': 'General', - 'col3dcylinderclustered': 'General', - 'col3dcylinderstacked': 'General', + 'col3dcylinder': 'General', + 'col3dcylinderclustered': 'General', + 'col3dcylinderstacked': 'General', 'col3dcylinderpercentstacked': '0%', - 'doughnut': 'General', - 'line': 'General', - 'pie': 'General', - 'pie3d': 'General', - 'pieofpiechart': 'General', - 'barofpiechart': 'General', - 'radar': 'General', - 'scatter': 'General', - 'surface3d': 'General', - 'wireframesurface3d': 'General', - 'contour': 'General', - 'wireframecontour': 'General', - 'bubble': 'General', - 'bubble3d': 'General'); + 'doughnut': 'General', + 'line': 'General', + 'pie': 'General', + 'pie3d': 'General', + 'pieofpiechart': 'General', + 'barofpiechart': 'General', + 'radar': 'General', + 'scatter': 'General', + 'surface3d': 'General', + 'wireframesurface3d': 'General', + 'contour': 'General', + 'wireframecontour': 'General', + 'bubble': 'General', + 'bubble3d': 'General'); return m[t]; End; @@ -12354,26 +12354,26 @@ private Function getSharp(t); Begin m := array( - 'bar3dconeclustered': 'cone', - 'bar3dconestacked': 'cone', - 'bar3dconepercentstacked': 'cone', - 'bar3dpyramidclustered': 'pyramid', - 'bar3dpyramidstacked': 'pyramid', + 'bar3dconeclustered': 'cone', + 'bar3dconestacked': 'cone', + 'bar3dconepercentstacked': 'cone', + 'bar3dpyramidclustered': 'pyramid', + 'bar3dpyramidstacked': 'pyramid', 'bar3dpyramidpercentstacked': 'pyramid', - 'bar3dcylinderclustered': 'cylinder', - 'bar3dcylinderstacked': 'cylinder', + 'bar3dcylinderclustered': 'cylinder', + 'bar3dcylinderstacked': 'cylinder', 'bar3dcylinderpercentstacked': 'cylinder', - 'col3dcone': 'cone', - 'col3dconeclustered': 'cone', - 'col3dconestacked': 'cone', - 'col3dconepercentstacked': 'cone', - 'col3dpyramid': 'pyramid', - 'col3dpyramidclustered': 'pyramid', - 'col3dpyramidstacked': 'pyramid', + 'col3dcone': 'cone', + 'col3dconeclustered': 'cone', + 'col3dconestacked': 'cone', + 'col3dconepercentstacked': 'cone', + 'col3dpyramid': 'pyramid', + 'col3dpyramidclustered': 'pyramid', + 'col3dpyramidstacked': 'pyramid', 'col3dpyramidpercentstacked': 'pyramid', - 'col3dcylinder': 'cylinder', - 'col3dcylinderclustered': 'cylinder', - 'col3dcylinderstacked': 'cylinder', + 'col3dcylinder': 'cylinder', + 'col3dcylinderclustered': 'cylinder', + 'col3dcylinderstacked': 'cylinder', 'col3dcylinderpercentstacked': 'cylinder'); return m[t]; End; @@ -12429,9 +12429,9 @@ private Function getVaryColors(t); Begin m := array( - 'barstacked': 100, + 'barstacked': 100, 'barpercentstacked': 100, - 'colstacked': 100, + 'colstacked': 100, 'colpercentstacked': 100 ); return m[t]; @@ -12440,88 +12440,88 @@ private Function getGrouping(t); Begin m := array( - 'area': 'standard', - 'areastacked': 'stacked', - 'areapercentstacked': 'percentStacked', - 'area3d': 'standard', - 'area3dstacked': 'stacked', - 'area3dpercentstacked': 'percentStacked', - 'bar': 'clustered', - 'barstacked': 'stacked', - 'barpercentstacked': 'percentStacked', - 'bar3dclustered': 'clustered', - 'bar3dstacked': 'stacked', - 'bar3dpercentstacked': 'percentStacked', - 'bar3dconeclustered': 'clustered', - 'bar3dconestacked': 'stacked', - 'bar3dconepercentstacked': 'percentStacked', - 'bar3dpyramidclustered': 'clustered', - 'bar3dpyramidstacked': 'stacked', + 'area': 'standard', + 'areastacked': 'stacked', + 'areapercentstacked': 'percentStacked', + 'area3d': 'standard', + 'area3dstacked': 'stacked', + 'area3dpercentstacked': 'percentStacked', + 'bar': 'clustered', + 'barstacked': 'stacked', + 'barpercentstacked': 'percentStacked', + 'bar3dclustered': 'clustered', + 'bar3dstacked': 'stacked', + 'bar3dpercentstacked': 'percentStacked', + 'bar3dconeclustered': 'clustered', + 'bar3dconestacked': 'stacked', + 'bar3dconepercentstacked': 'percentStacked', + 'bar3dpyramidclustered': 'clustered', + 'bar3dpyramidstacked': 'stacked', 'bar3dpyramidpercentstacked': 'percentStacked', - 'bar3dcylinderclustered': 'clustered', - 'bar3dcylinderstacked': 'stacked', + 'bar3dcylinderclustered': 'clustered', + 'bar3dcylinderstacked': 'stacked', 'bar3dcylinderpercentstacked': 'percentStacked', - 'col': 'clustered', - 'colstacked': 'stacked', - 'colpercentstacked': 'percentStacked', - 'col3d': 'standard', - 'col3dclustered': 'clustered', - 'col3dstacked': 'stacked', - 'col3dpercentstacked': 'percentStacked', - 'col3dcone': 'standard', - 'col3dconeclustered': 'clustered', - 'col3dconestacked': 'stacked', - 'col3dconepercentstacked': 'percentStacked', - 'col3dpyramid': 'standard', - 'col3dpyramidclustered': 'clustered', - 'col3dpyramidstacked': 'stacked', + 'col': 'clustered', + 'colstacked': 'stacked', + 'colpercentstacked': 'percentStacked', + 'col3d': 'standard', + 'col3dclustered': 'clustered', + 'col3dstacked': 'stacked', + 'col3dpercentstacked': 'percentStacked', + 'col3dcone': 'standard', + 'col3dconeclustered': 'clustered', + 'col3dconestacked': 'stacked', + 'col3dconepercentstacked': 'percentStacked', + 'col3dpyramid': 'standard', + 'col3dpyramidclustered': 'clustered', + 'col3dpyramidstacked': 'stacked', 'col3dpyramidpercentstacked': 'percentStacked', - 'col3dcylinder': 'standard', - 'col3dcylinderclustered': 'clustered', - 'col3dcylinderstacked': 'stacked', + 'col3dcylinder': 'standard', + 'col3dcylinderclustered': 'clustered', + 'col3dcylinderstacked': 'stacked', 'col3dcylinderpercentstacked': 'percentStacked', - 'line': 'standard'); + 'line': 'standard'); return m[t]; End; Function getBarDir(t); Begin m := array( - 'bar': 'bar', - 'barstacked': 'bar', - 'barpercentstacked': 'bar', - 'bar3dclustered': 'bar', - 'bar3dstacked': 'bar', - 'bar3dpercentstacked': 'bar', - 'bar3dconeclustered': 'bar', - 'bar3dconestacked': 'bar', - 'bar3dconepercentstacked': 'bar', - 'bar3dpyramidclustered': 'bar', - 'bar3dpyramidstacked': 'bar', + 'bar': 'bar', + 'barstacked': 'bar', + 'barpercentstacked': 'bar', + 'bar3dclustered': 'bar', + 'bar3dstacked': 'bar', + 'bar3dpercentstacked': 'bar', + 'bar3dconeclustered': 'bar', + 'bar3dconestacked': 'bar', + 'bar3dconepercentstacked': 'bar', + 'bar3dpyramidclustered': 'bar', + 'bar3dpyramidstacked': 'bar', 'bar3dpyramidpercentstacked': 'bar', - 'bar3dcylinderclustered': 'bar', - 'bar3dcylinderstacked': 'bar', + 'bar3dcylinderclustered': 'bar', + 'bar3dcylinderstacked': 'bar', 'bar3dcylinderpercentstacked': 'bar', - 'col': 'col', - 'colstacked': 'col', - 'colpercentstacked': 'col', - 'col3d': 'col', - 'col3dclustered': 'col', - 'col3dstacked': 'col', - 'col3dpercentstacked': 'col', - 'col3dcone': 'col', - 'col3dconestacked': 'col', - 'col3dconeclustered': 'col', - 'col3dconepercentstacked': 'col', - 'col3dpyramid': 'col', - 'col3dpyramidclustered': 'col', - 'col3dpyramidstacked': 'col', + 'col': 'col', + 'colstacked': 'col', + 'colpercentstacked': 'col', + 'col3d': 'col', + 'col3dclustered': 'col', + 'col3dstacked': 'col', + 'col3dpercentstacked': 'col', + 'col3dcone': 'col', + 'col3dconestacked': 'col', + 'col3dconeclustered': 'col', + 'col3dconepercentstacked': 'col', + 'col3dpyramid': 'col', + 'col3dpyramidclustered': 'col', + 'col3dpyramidstacked': 'col', 'col3dpyramidpercentstacked': 'col', - 'col3dcylinder': 'col', - 'col3dcylinderclustered': 'col', - 'col3dcylinderstacked': 'col', + 'col3dcylinder': 'col', + 'col3dcylinderclustered': 'col', + 'col3dcylinderstacked': 'col', 'col3dcylinderpercentstacked': 'col', - 'line': 'standard'); + 'line': 'standard'); return m[t]; End; @@ -12697,7 +12697,7 @@ Type TSectPr = Class LineRatio := 1.0; if ifObj(pPr) then Begin - if pPr.LineSpacingRule = 'exact' and pPr.LineSpacing then //固定行距 + if pPr.LineSpacingRule = 'exact' and pPr.LineSpacing then //固定行距 defaultLineHeight := pPr.LineSpacing; else if pPr.LineSpacing then Begin LineRatio := pPr.LineSpacing / 240; @@ -12936,13 +12936,13 @@ Type TDocumentBody = Class(DocObject) return r; End; - ///word最后一个段落 + ///word最后一个段落 ///返回:TParagraph对象 - Function LastParagraph(); - Begin + Function LastParagraph(); + Begin node := node_.LastChildElement('w:p'); return ifObj(node) ? new TParagraph(node) : nil; - End; + End; ///添加新段落 ///paragraph: TParagraph对象 @@ -12961,7 +12961,7 @@ Type TDocumentBody = Class(DocObject) _set_lastParagraph_(posOpt, p.node_);//设置最后一个段落 return p; End; - + ///复制w:p节点内容 ///paragraphObj: TParagraph对象 ///posOpt: 段落位置,0 在DOCX文件开头;-1 文件尾;N 在第N段之后;DocumentPart对象 在posOpt之后新添加段落 @@ -13111,14 +13111,14 @@ Type TDocumentBody = Class(DocObject) End; defaultpPr := defaultParagraph.pPr.Marshal(); defaultrPr := defaultParagraph.pPr.rPr.Marshal(); - + for i:=0 to length(tbl.Data_)-1 do Begin trNode := tbl.node_.InsertEndChild('element', 'w:tr'); trNode.InsertEndChild('element', 'w:trPr'); multiLine := false; - if ifstring(tbl.Data_[i, j]) and Pos('\n', tbl.Data_[i, j]) then - multiLine := true; for j:=0 to tbl.colCount_-1 do Begin + if ifstring(tbl.Data_[i, j]) and Pos('\n', tbl.Data_[i, j]) then + multiLine := true; //对象太多的话,对象效率奇慢,优化掉(性能可能相差50倍) if 0 then Begin tc := new TCell(); @@ -14196,9 +14196,9 @@ Type TDocSection = Class(DocObject, TDocSectionImpl) ///返回指定页眉 ///type:页眉类型,(default、even、first) - ///default, Header for odd pages or all if no even header. - ///first, Header for first page of section. - ///even, Header for even pages of recto/verso section. + ///default, Header for odd pages or all if no even header. + ///first, Header for first page of section. + ///even, Header for even pages of recto/verso section. Function Header(type); Begin return _getHeaderFooter('w:headerReference', type); @@ -14206,9 +14206,9 @@ Type TDocSection = Class(DocObject, TDocSectionImpl) ///返回指定页脚 ///type:页眉类型,(default、even、first) - ///default, Header for odd pages or all if no even header. - ///first, Header for first page of section. - ///even, Header for even pages of recto/verso section. + ///default, Header for odd pages or all if no even header. + ///first, Header for first page of section. + ///even, Header for even pages of recto/verso section. Function Footer(type); Begin return _getHeaderFooter('w:footerReference', type); @@ -14216,9 +14216,9 @@ Type TDocSection = Class(DocObject, TDocSectionImpl) ///添加页眉 ///type:页眉类型,(default、even、first) - ///default, Header for odd pages or all if no even header. - ///first, Header for first page of section. - ///even, Header for even pages of recto/verso section. + ///default, Header for odd pages or all if no even header. + ///first, Header for first page of section. + ///even, Header for even pages of recto/verso section. Function AddHeader(type); Begin return _AddHeaderFooter('header', (ifNil(type) or type = '') ? 'default' : type); @@ -14226,9 +14226,9 @@ Type TDocSection = Class(DocObject, TDocSectionImpl) ///添加页脚 ///type:页眉类型,(default、even、first) - ///default, Header for odd pages or all if no even header. - ///first, Header for first page of section. - ///even, Header for even pages of recto/verso section. + ///default, Header for odd pages or all if no even header. + ///first, Header for first page of section. + ///even, Header for even pages of recto/verso section. Function AddFooter(type); Begin return _AddHeaderFooter('footer', (ifNil(type) or type = '') ? 'default' : type); @@ -14358,6 +14358,11 @@ Type TTextBox = Class(TDocumentBody, TTextBoxImpl) class(TSXml).UpdateNode(NodeEx_, data[0]['attributes'], data[0]['children']); End; End; + + Function Clear(); + Begin + if ifObj(node_) then node_.DeleteChildren(); + End; pNode_;// NodeEx_;//w:p/w:r/mc:AlternateContent/mc:Choice/w:drawing/wp:anchor/a:graphic/a:graphicData/wps:wsp/wps:txbx/wps:txbxContent @@ -14772,14 +14777,14 @@ Type TTable = Class(DocObject, TTableImpl) End; /// 设置行高 - Function RowHeight(row, height); - Begin + Function RowHeight(row, height); + Begin if row <= 0 or row > Rows() then return; node := _getRowNode(row - 1); node := class(TSXml).GetNode(node, 'w:trPr/w:trHeight', 'end'); node.SetAttribute('w:hRule', 'exact'); node.SetAttribute('w:val', height); - End; + End; Function Height(row); Begin @@ -15248,11 +15253,11 @@ End; //w:style -// 'w:name', 'w:aliases', 'w:basedOn', 'w:next', 'w:link', -// 'w:autoRedefine', 'w:hidden', 'w:uiPriority', 'w:semiHidden', -// 'w:unhideWhenUsed', 'w:qFormat', 'w:locked', 'w:personal', -// 'w:personalCompose', 'w:personalReply', 'w:rsid', 'w:pPr', 'w:rPr', -// 'w:tblPr', 'w:trPr', 'w:tcPr', 'w:tblStylePr' +// 'w:name', 'w:aliases', 'w:basedOn', 'w:next', 'w:link', +// 'w:autoRedefine', 'w:hidden', 'w:uiPriority', 'w:semiHidden', +// 'w:unhideWhenUsed', 'w:qFormat', 'w:locked', 'w:personal', +// 'w:personalCompose', 'w:personalReply', 'w:rsid', 'w:pPr', 'w:rPr', +// 'w:tblPr', 'w:trPr', 'w:tcPr', 'w:tblStylePr' Type TDocxStyle = Class(TDocxStyleImpl) Function Create(); overload; Begin diff --git a/funcext/TSOffice/TSDocxFile.tsf b/funcext/TSOffice/TSDocxFile.tsf index 16e463e..1845f2a 100644 --- a/funcext/TSOffice/TSDocxFile.tsf +++ b/funcext/TSOffice/TSDocxFile.tsf @@ -1,4 +1,4 @@ -// Version 1.6.3 +// Version 1.6.4 Type TSDocxFile = Class ///Version: V1.0 2022-09-20 ///适用于 Microsoft Word docx格式文件 diff --git a/funcext/TSOffice/TSXlsxFile.tsf b/funcext/TSOffice/TSXlsxFile.tsf index 67e4f2d..85f46ce 100644 --- a/funcext/TSOffice/TSXlsxFile.tsf +++ b/funcext/TSOffice/TSXlsxFile.tsf @@ -1,4 +1,4 @@ -// Version 1.6.3 +// Version 1.6.4 Type TSXlsxFile = Class ///Version: V1.0 2022-08-08 ///适用于 Microsoft Excel? 2007 及以上版本创建的电子表格文档。支持 XLSX / XLSM / XLTM / XLTX 等多种文档格式。 diff --git a/更新日志.md b/更新日志.md index 5533a1b..f0cf6f4 100644 --- a/更新日志.md +++ b/更新日志.md @@ -1,5 +1,18 @@ # 更新日志 +## 2023-3-4 + +### V1.6.4 + +#### word + +1. 修复`InsertTable`内容`\n`无换行问题 +2. `TextBox`支持`Clear`清空内容 + +#### word + +1. 修复目录生成陷入死循环问题 + ## 2023-2-23 ### V1.6.3