This commit is contained in:
csh 2025-06-23 10:50:55 +08:00
parent c05b646104
commit d57631a19a
5 changed files with 67 additions and 6 deletions

View File

@ -1,4 +1,4 @@
// Version 1.7.9
// Version 1.8.0
Function TOfficeObj(n);
Begin
case lowercase(n) of
@ -5511,7 +5511,7 @@ type TBr=class(NodeInfo)
Function GetAttrs(); override;
Begin
return array(("Type", "w:type", Type, ""),("Clear", "w:left", Clear, "")) union ExtAttr;
return array(("Type", "w:type", Type, ""),("Val", "w:val", Val, ""),("Clear", "w:left", Clear, "")) union ExtAttr;
End;
Function GetChildren(); override;
@ -5521,6 +5521,7 @@ type TBr=class(NodeInfo)
//Attributes
Type;
Val;
Clear;
//Nodes
@ -13244,8 +13245,30 @@ Type TDocumentBody = Class(DocObject)
para.PPr.RPr := customCell[i, j, 2];
else
para.PPr.RPr := defaultParagraph.pPr.rpr;
para.Run.SetText(ifstring(tbl.Data_[i, j]) ? tbl.Data_[i, j] : '');
para.Run.RPr := para.PPr.RPr;
str := tbl.Data_[i, j];
AdjustLineBreaks(str, 0);
if not class(TSXml).IsUtf8() then
str := class(TSXml).CurCodePageToUtf8(str);
lines := str2array(str,'\n');
if lines[0] <> '' then
begin
para.Run.T := lines[0];
para.Run.RPr := para.PPr.RPr;
end
for i:=1 to length(lines)-1 do Begin
r := para.AddRun();
r.Br.Val := 1;
r.RPr := para.PPr.RPr;
r := para.AddRun();
r.T := lines[i];
r.RPr := para.PPr.RPr;
if _preserve(lines[i]) then
begin
r := para.AddRun();
r.Space := "preserve";
r.RPr := para.PPr.RPr;
end
End;
tcNode.InsertEndChild(para.Marshal());
End
else Begin

View File

@ -1,4 +1,4 @@
// Version 1.7.9
// Version 1.8.0
Type TSDocxFile = Class
///Version: V1.0 2022-09-20
///适用于 Microsoft Word docx格式文件
@ -537,6 +537,25 @@ Type TSDocxFile = Class
return content;
End;
///添加自定义目录
///[posOpt: 段落位置]在posOpt之后新添加目录否则在首页添加
///UpperHeadingLevel标题最高级别
///LowerHeadingLevel标题最低级别
/// 使用 UpperHeadingLevel 属性可设置起始标题级别(最高)。例如,若要设置 TOC 域语法 {TOC \o "1-3"},可将 LowerHeadingLevel 属性设为 3并将 UpperHeadingLevel 属性设为 1。
///因为word、wps、openoffice等软件对于页码的计算各不相同本功能不直接设置页码需要用相关客户端软件打开文件后更新目录域。
Function AddCustomTableContent(posOpt, UpperHeadingLevel, LowerHeadingLevel);
Begin
content := new TTableContent(self);
node := getPosNode(posOpt);
content.CustomAdd(node, UpperHeadingLevel, LowerHeadingLevel); //标题级别
if ifObj(node) then
content.node_ := document_.Body().node_.InsertAfterChild(node, content.Marshal());
else
content.node_ := document_.Body().node_.InsertFirstChild(content.Marshal());
//AddPageBreak(content.node_);
return content;
End;
///获取全部标题列表
///UpperHeadingLevel标题最高级别
///LowerHeadingLevel标题最低级别

View File

@ -1,4 +1,4 @@
// Version 1.7.9
// Version 1.8.0
Type TSXlsxFile = Class
///Version: V1.0 2022-08-08
///适用于 Microsoft Excel? 2007 及以上版本创建的电子表格文档。支持 XLSX / XLSM / XLTM / XLTX 等多种文档格式。

View File

@ -94,6 +94,16 @@ Type TTableContent = class
_AddTableContent(posOpt, UpperHeadingLevel, LowerHeadingLevel);
End;
///添加目录条目
///UpperHeadingLevel标题最高级别
///LowerHeadingLevel标题最低级别
/// 使用 UpperHeadingLevel 属性可设置起始标题级别(最高)。例如,若要设置 TOC 域语法 {TOC \o "1-3"},可将 LowerHeadingLevel 属性设为 3并将 UpperHeadingLevel 属性设为 1。
Function CustomAdd(posOpt, UpperHeadingLevel, LowerHeadingLevel);
Begin
//自定义页码计算与word、wps有差异不推荐使用
_AddTableContent(posOpt, UpperHeadingLevel, LowerHeadingLevel);
End;
Function _AddDefaultTableContent(UpperHeadingLevel, LowerHeadingLevel);
Begin
p := _AddItem(UpperHeadingLevel, LowerHeadingLevel, UpperHeadingLevel - 1, true);

View File

@ -1,5 +1,14 @@
# 更新日志
## 2025-6-23
### V1.8.0
#### word
1. **feat**: 支持添加自定目录`TSDocxFile.AddCustomTableContent`
2. **fix**: 修复单元格内容换行,自定义属性失效问题
## 2025-2-28
### V1.7.9