feat(report): 优化报告生成工具中的文档处理功能
- 在Docx4jUtil中添加enableUpdateFieldsOnOpen方法,确保Word打开时自动刷新页码等域 - 移除ItemAnchorAssembler中不必要的导入包,精简代码结构 - 重构谐波数据处理逻辑,添加谐波衍生值计算功能 - 实现固定占位符替换机制,支持谐波电压和功率表的动态填充 - 优化表格结构分离逻辑,使用空段落而非可见标题分隔多表 - 增强错误范围处理,移除单位后缀并优化谐波电流计算逻辑 - 添加全面的单元测试验证各种谐波检测场景的功能正确性
This commit is contained in:
@@ -8,6 +8,7 @@ import lombok.Setter;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.docx4j.XmlUtils;
|
||||
import org.docx4j.openpackaging.packages.WordprocessingMLPackage;
|
||||
import org.docx4j.openpackaging.parts.WordprocessingML.DocumentSettingsPart;
|
||||
import org.docx4j.openpackaging.parts.WordprocessingML.MainDocumentPart;
|
||||
import org.docx4j.wml.*;
|
||||
import org.docx4j.wml.TcPrInner.GridSpan;
|
||||
@@ -31,6 +32,27 @@ import java.util.Map;
|
||||
@Slf4j
|
||||
public class Docx4jUtil {
|
||||
|
||||
/**
|
||||
* 让 Word 打开文档时自动刷新 PAGE / NUMPAGES 等域,避免动态插表后页码显示旧值。
|
||||
*/
|
||||
public static void enableUpdateFieldsOnOpen(WordprocessingMLPackage wordPackage) throws Exception {
|
||||
if (wordPackage == null || wordPackage.getMainDocumentPart() == null) {
|
||||
return;
|
||||
}
|
||||
DocumentSettingsPart settingsPart = wordPackage.getMainDocumentPart().getDocumentSettingsPart(true);
|
||||
CTSettings settings = settingsPart.getContents();
|
||||
if (settings == null) {
|
||||
settings = new CTSettings();
|
||||
settingsPart.setJaxbElement(settings);
|
||||
}
|
||||
BooleanDefaultTrue updateFields = settings.getUpdateFields();
|
||||
if (updateFields == null) {
|
||||
updateFields = new BooleanDefaultTrue();
|
||||
settings.setUpdateFields(updateFields);
|
||||
}
|
||||
updateFields.setVal(Boolean.TRUE);
|
||||
}
|
||||
|
||||
/**
|
||||
* 创建标题
|
||||
*
|
||||
|
||||
Reference in New Issue
Block a user