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