poi&poi-tl实现填充上下角标
/**
* poi填充上下角标
*/
@Test
public void poiFillSubscript() {
XWPFDocument document = new XWPFDocument();
// 输出文档的路径
String outputFilePath = "C:\\Users\\15106\\Desktop\\subscript-output.docx";
// 添加段落
XWPFParagraph paragraph = document.createParagraph();
// 添加上标
XWPFRun run1 = paragraph.createRun();
run1.setText("这是上标文本。");
run1.setSubscript(VerticalAlign.SUPERSCRIPT); // 设置为上标
// 添加正常文本
XWPFRun run2 = paragraph.createRun();
run2.setText("这是正常文本。");
run2.setSubscript(VerticalAlign.BASELINE); // 设置为正常文本
// 添加下标
XWPFRun run3 = paragraph.createRun();
run3.setText("这是下标文本。");
run3.setSubscript(VerticalAlign.SUBSCRIPT); // 设置为下标
// 保存文档
try (FileOutputStream out = new FileOutputStream(outputFilePath)) {
document.write(out);
System.out.println("文档创建成功: " + outputFilePath);
} catch (IOException e) {
e.printStackTrace();
}
}
/**
* poi-tl填充上下角标
*/
@Test
public void poitlFillSubscript() {
// 使用模板文档的路径
String templateFilePath = "C:\\Users\\15106\\Desktop\\subscript-template.docx";
// 输出文档的路径
String outputFilePath = "C:\\Users\\15106\\Desktop\\subscript-output.docx";
// 创建 Word 模板对象
try (FileInputStream in = new FileInputStream(templateFilePath);
XWPFTemplate template = XWPFTemplate.compile(in)) {
// 创建样式
Style normalStyle = new Style();
normalStyle.setVertAlign("baseline"); // 正常样式
Style superscriptStyle = new Style();
superscriptStyle.setVertAlign("superscript"); // 上标样式
Style subscriptStyle = new Style();
subscriptStyle.setVertAlign("subscript"); // 下标样式
// 创建文本渲染数据
TextRenderData normalText = new TextRenderData("这是正常文本。");
normalText.setStyle(normalStyle);
TextRenderData superscriptText = new TextRenderData("这是上标文本。");
superscriptText.setStyle(superscriptStyle);
TextRenderData subscriptText = new TextRenderData("这是下标文本。");
subscriptText.setStyle(subscriptStyle);
// 将文本渲染数据放入模板
template.render(
new HashMap<String, Object>() {{
put("normalText", normalText);
put("superscriptText", superscriptText);
put("subscriptText", subscriptText);
}}
);
// 保存文件
try (FileOutputStream out = new FileOutputStream(outputFilePath)) {
template.write(out);
System.out.println("文档创建成功: " + outputFilePath);
}
} catch (IOException e) {
e.printStackTrace();
}
}java