POI - get.hyperlink () не получает последнюю гиперссылку ячейки - PullRequest
0 голосов
/ 18 декабря 2018

Здесь я перезаписываю 1-ю гиперссылку с 2-й гиперссылкой в ​​той же ячейке, а метод get.hyperlink() всегда вытягивает гиперссылку, которая была впервые записана в ячейке.

Любая помощь вокруг этого была бы великолепна !!Заранее спасибо

Ниже приведен мой код и вывод:

public static void main(String[] args) {
    ExcelUtils2.writeHyperLink("DashboardCopy", 1, 1, "test1", "https://google.com");
    ExcelUtils2.writeHyperLink("DashboardCopy", 1, 1, "test2", "https://facebook.com");
    String dtr = ExcelUtils2.getCellHyperlink(1, 1);
    System.out.println("Hyperlink of the cell is >> " + dtr);
}


public static synchronized void writeHyperLink(String workBookName, int irow, int icol, String ivalue, String iUrl)
        throws InvalidFormatException, IOException {
    FileInputStream excelFile = new FileInputStream(excelSource);
    excelWBook = new XSSFWorkbook(excelFile);
    excelWSheet = excelWBook.getSheet(workBookName);
    createHelper = excelWBook.getCreationHelper();
    XSSFRow row = excelWSheet.getRow(irow);
    XSSFCell cell = row.createCell(icol);
    cell.setCellValue(ivalue);
    XSSFHyperlink link = (XSSFHyperlink) createHelper.createHyperlink(HyperlinkType.URL);
    link.setAddress(iUrl);
    cell.setHyperlink(link);
    FileOutputStream fos = new FileOutputStream(excelSource);
    excelWBook.write(fos);
    fos.close();

}

public static String getCellHyperlink(int rowNum, int colNum) throws Exception {
    FileInputStream excelFile = new FileInputStream(excelSource);
    excelWBook = new XSSFWorkbook(excelFile);
    excelWSheet = excelWBook.getSheet("DashboardCopy");
    XSSFRow row = excelWSheet.getRow(rowNum);
    XSSFCell cell = row.getCell(colNum);
    XSSFHyperlink link = cell.getHyperlink();
    String cellData = link.getAddress();
    // System.out.println(link.getAddress());
    return cellData;
}

Вывод: Гиперссылка ячейки >> >> 1009 *https://google.com

Ожидаемый вывод: Должен напечатать https://facebook.com

1 Ответ

0 голосов
/ 18 декабря 2018

Я бы попытался удалить гиперссылку перед установкой

 cell.removeHyperlink();
 cell.setHyperlink(link);
...