Java 如何以POI Word格式创建电子邮件链接
我如何在中创建外部链接或电子邮件链接?有对的描述,但我没有发现Word(HWPF XWPF)有类似的描述。恐怕Apache POI在处理Word文件方面不如在处理Excel文档方面。如果你处于发展的早期阶段,你可以考虑搬到。 干杯,Java 如何以POI Word格式创建电子邮件链接,java,apache-poi,Java,Apache Poi,我如何在中创建外部链接或电子邮件链接?有对的描述,但我没有发现Word(HWPF XWPF)有类似的描述。恐怕Apache POI在处理Word文件方面不如在处理Excel文档方面。如果你处于发展的早期阶段,你可以考虑搬到。 干杯, Wim目前,XWPF支持读取和操作超链接,有关详细信息,请参阅和 目前还没有任何面向用户的代码来处理在XWPF中创建超链接,但所有组件都在那里(处理低级超链接对象、将超链接添加到关系中的能力等)。一个补丁,以配合这一点,以提供缺失的功能将非常感谢所有 全部 publ
Wim目前,XWPF支持读取和操作超链接,有关详细信息,请参阅和 目前还没有任何面向用户的代码来处理在XWPF中创建超链接,但所有组件都在那里(处理低级超链接对象、将超链接添加到关系中的能力等)。一个补丁,以配合这一点,以提供缺失的功能将非常感谢所有 全部
public void example() throws Exception{
XWPFDocument document = new XWPFDocument();
//Append a link to
appendExternalHyperlink("https://poi.apache.org", " Link to POI", document.createParagraph());
document.write(new FileOutputStream("resultat.docx"));
}
/**
* Appends an external hyperlink to the paragraph.
*
* @param url The URL to the external target
* @param text The linked text
* @param paragraph the paragraph the link will be appended to.
*/
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();
ctr.setTArray(new CTText[]{ctText});
//Insert the linked text into the link
cLink.setRArray(new CTR[]{ctr});
}
上面的示例显示了如何创建外部超链接。对于需要创建内部超链接的用户,请参见以下代码:
XWPFParagraph hyperPara = document.createParagraph();
hyperPara.setAlignment(ParagraphAlignment.CENTER);
addHyperlink(hyperPara, "Hyperlink Text", "Heading Text");
private static void addHyperlink(XWPFParagraph para, String text, String bookmark) {
//Create hyperlink in paragraph
CTHyperlink cLink=para.getCTP().addNewHyperlink();
cLink.setAnchor(bookmark);
//Create the linked text
CTText ctText=CTText.Factory.newInstance();
ctText.setStringValue(text);
CTR ctr=CTR.Factory.newInstance();
ctr.setTArray(new CTText[]{ctText});
//Create the formatting
CTFonts fonts = CTFonts.Factory.newInstance();
fonts.setAscii("Calibri Light" );
CTRPr rpr = ctr.addNewRPr();
CTColor colour = CTColor.Factory.newInstance();
colour.setVal("0000FF");
rpr.setColor(colour);
CTRPr rpr1 = ctr.addNewRPr();
rpr1.addNewU().setVal(STUnderline.SINGLE);
//Insert the linked text into the link
cLink.setRArray(new CTR[]{ctr});
}
@Gagravarr你能帮我解决这个问题吗?这真的很有帮助!因此,超链接现在显示,但锚文本不会以蓝色文本或下划线显示。你能告诉我在CTR类中应该使用哪种方法来创建样式吗?由于没有文档,所以很难确定哪种方法起什么作用。在谷歌搜索之后,我发现了这一点。很抱歉格式化。CTRPr rpr=ctr.addNewRPr();CTColor=CTColor.Factory.newInstance();颜色设置值(“0000FF”);rpr.setColor(彩色);CTRPr rpr1=ctr.addNewRPr();rpr1.addNewU().setVal(studerline.SINGLE);是否可以将此内部超链接添加到XWPFTableCell?