Java JXLS-如何在工作簿中创建Excel工作表的超链接

Java JXLS-如何在工作簿中创建Excel工作表的超链接,java,jxls,Java,Jxls,我正在尝试使用创建Excel工作簿。我想要一个文本超链接,用于在工作簿中的工作表中导航。我在网上找不到任何有用的信息。请给出任何有助于解决问题的想法或超链接。Thank是一个小型且易于使用的Java库,用于使用XLS模板编写Excel文件,以及使用XML配置将Excel中的数据读取到Java对象中。如果您试图创建hyerlink,jXLS没有低级别的excel操作能力。但是你可以使用免费的图书馆。此代码创建指向该任务单元格的超链接,如下所示 //creating the cell

我正在尝试使用创建Excel工作簿。我想要一个文本超链接,用于在工作簿中的工作表中导航。我在网上找不到任何有用的信息。请给出任何有助于解决问题的想法或超链接。Thank

是一个小型且易于使用的Java库,用于使用XLS模板编写Excel文件,以及使用XML配置将Excel中的数据读取到Java对象中。如果您试图创建hyerlink,jXLS没有低级别的excel操作能力。但是你可以使用免费的图书馆。此代码创建指向该任务单元格的超链接,如下所示

        //creating the cell
        Row row = my_sheet.createRow(0);                
        Cell cell = row.createCell(0);

        //creating helper class
        XSSFWorkbook workbook = new XSSFWorkbook();
        XSSFCreationHelper helper= workbook.getCreationHelper();

        //creating the hyperlink
        link = helper.createHyperlink(HSSFHyperlink.LINK_DOCUMENT);
        link.setAddress("'target_worksheet_name'!A1");

        //optional hyperlink style
        XSSFCellStyle hlinkstyle = workbook.createCellStyle();
        XSSFFont hlinkfont = workbook.createFont();
        hlinkfont.setUnderline(XSSFFont.U_SINGLE);
        hlinkfont.setColor(HSSFColor.BLUE.index);
        hlinkstyle.setFont(hlinkfont);

        //applying the hyperlink to the cell
        cell.setHyperlink(link);

jxls支持参数化公式,您可以

使用具有如下公式的单元格 =超链接(“单击我”)

在单元格中使用 =超链接(${paramLink},${paramDisplay})

将参数传递到jxls上下文,它们将作为正确的链接呈现


老问题,但另一种可能的解决方案是使用JXLS 2+和
POI转换器。它有一个名为
PoiUtil
的实用程序类,可以将其注入到上下文中

final var transformer = PoiTransformer.createTransformer(inputStream, outputStream);

// it is important to create the context like this
// or you can manually insert the PoiUtil instance if you wish

final var context = PoiTransformer.createInitialContext();
// setup your context...

JxlsHelper.getInstance().processTemplate(context, transformer);
在模板中,您可以这样使用它:
${util.hyperlink(linkVar,titleVar)}
其中
linkVar
titleVar
是上下文中相应的变量

final var transformer = PoiTransformer.createTransformer(inputStream, outputStream);

// it is important to create the context like this
// or you can manually insert the PoiUtil instance if you wish

final var context = PoiTransformer.createInitialContext();
// setup your context...

JxlsHelper.getInstance().processTemplate(context, transformer);