📜  Apache POI –超链接(1)

📅  最后修改于: 2023-12-03 14:39:17.022000             🧑  作者: Mango

Apache POI – 超链接

Apache POI是一组开源的Java库,用于处理Microsoft Office格式的文档,包括Excel、PowerPoint和Word。超链接是处理Excel和Word文档中常用的一种元素。在Apache POI中,我们可以使用HSSF和XSSF API处理Excel文件中的超链接,使用HWPF和XWPF API来处理Word文件中的超链接。

处理Excel中的超链接
HSSF API

在HSSF API中,我们使用Hyperlink类来处理超链接。Hyperlink的构造函数需要4个参数:链接类型、链接地址、提示文本和链接所在的单元格位置。

Workbook workbook = new HSSFWorkbook();
Sheet sheet = workbook.createSheet("Hyperlinks");

Cell cell = sheet.createRow(0).createCell(0);
cell.setCellValue("Click Here");

CreationHelper creationHelper = workbook.getCreationHelper();
Hyperlink hyperlink = creationHelper.createHyperlink(HyperlinkType.URL);
hyperlink.setAddress("https://www.example.com/");
hyperlink.setTooltip("Visit Example Website");
cell.setHyperlink(hyperlink);

FileOutputStream fileOut = new FileOutputStream("hyperlinks.xls");
workbook.write(fileOut);
fileOut.close();
workbook.close();
XSSF API

在XSSF API中,我们使用XSSFHyperlink类来处理超链接,它的构造函数需要3个参数:链接类型、链接地址和提示文本。

Workbook workbook = new XSSFWorkbook();
Sheet sheet = workbook.createSheet("Hyperlinks");

Cell cell = sheet.createRow(0).createCell(0);
cell.setCellValue("Click Here");

CreationHelper creationHelper = workbook.getCreationHelper();
XSSFHyperlink hyperlink = (XSSFHyperlink) creationHelper.createHyperlink(HyperlinkType.URL);
hyperlink.setAddress("https://www.example.com/");
hyperlink.setTooltip("Visit Example Website");
cell.setHyperlink(hyperlink);

FileOutputStream fileOut = new FileOutputStream("hyperlinks.xlsx");
workbook.write(fileOut);
fileOut.close();
workbook.close();
处理Word中的超链接
HWPF API

在HWPF API中,我们使用Hyperlink类来处理超链接,它的构造函数需要3个参数:链接地址、链接名称和链接所在的位置(以字节为单位)。

FileInputStream fis = new FileInputStream("document.doc");
HWPFDocument document = new HWPFDocument(fis);

Range range = document.getRange();
CharacterRun run = range.insertBefore("Click Here: ");
Hyperlink hyperlink = new Hyperlink("https://www.example.com/", "Example Website", run.getStartOffset());
range.addHyperlink(hyperlink);

FileOutputStream fos = new FileOutputStream("document.doc");
document.write(fos);
document.close();
fis.close();
fos.close();
XWPF API

在XWPF API中,我们使用XWPFHyperlink类来处理超链接。它的构造函数需要3个参数:链接类型、链接地址和链接显示文本。

XWPFDocument document = new XWPFDocument();

XWPFParagraph paragraph = document.createParagraph();
XWPFRun run = paragraph.createRun();
run.setText("Click Here: ");

XWPFHyperlink hyperlink = paragraph.getHyperlink(false);
if (hyperlink == null) {
  hyperlink = paragraph.getCTP().addNewHyperlink();
}
hyperlink.setId(document.getPackagePart().addExternalRelationship("https://www.example.com/", XWPFRelation.HYPERLINK.getRelation()).getId());

run = paragraph.createRun();
run.setText("Example Website");
hyperlink.setAnchor("Example Website");

FileOutputStream fos = new FileOutputStream("document.docx");
document.write(fos);
document.close();
fos.close();
总结

使用Apache POI可以轻松地处理Excel和Word中的超链接。我们可以使用不同的API来处理超链接。在HSSF和XSSF API中,我们使用Hyperlink和XSSFHyperlink类来处理Excel中的超链接,而在HWPF和XWPF API中,我们使用Hyperlink和XWPFHyperlink类来处理Word中的超链接。