poi操作Word创建超链接
项目引入poi:
<dependency> <groupId>org.apache.poi</groupId> <artifactId>poi</artifactId> <version>3.16</version> </dependency> <dependency> <groupId>org.apache.poi</groupId> <artifactId>poi-scratchpad</artifactId> <version>3.16</version> </dependency> <dependency> <groupId>org.apache.poi</groupId> <artifactId>poi-ooxml</artifactId> <version>3.16</version> </dependency>
实现逻辑:
public static void appendExternalHyperlink(String url, String text, XWPFParagraph paragraph) { // Add the link as External relationship String id = paragraph .getDocument() .getPackagePart() .addExternalRelationship(url, XWPFRelation.HYPERLINK.getRelation()).getId(); // Append the link and bind it to the relationship CTHyperlink cLink = paragraph.getCTP().addNewHyperlink(); cLink.setId(id); // Create the linked text CTText ctText = CTText.Factory.newInstance(); ctText.setStringValue(text); CTR ctr = CTR.Factory.newInstance(); CTRPr rpr = ctr.addNewRPr(); //设置超链接样式 CTColor color = CTColor.Factory.newInstance(); color.setVal("0000FF"); rpr.setColor(color); rpr.addNewU().setVal(STUnderline.SINGLE); //设置字体 CTFonts fonts = rpr.isSetRFonts() ? rpr.getRFonts() : rpr.addNewRFonts(); fonts.setAscii("宋体"); fonts.setEastAsia("宋体"); fonts.setHAnsi("宋体"); //设置字体大小 CTHpsMeasure sz = rpr.isSetSz() ? rpr.getSz() : rpr.addNewSz(); sz.setVal(new BigInteger("24")); ctr.setTArray(new CTText[] { ctText }); // Insert the linked text into the link cLink.setRArray(new CTR[] { ctr }); //设置段落居左 paragraph.setAlignment(ParagraphAlignment.LEFT); paragraph.setVerticalAlignment(TextAlignment.CENTER); }