Bug 47375

Summary: Hyperlink does not work in POI 3.5 beta 4 and beyond
Product: POI Reporter: Sujeet Singh <sujikin>
Component: HSSFAssignee: POI Developers List <dev>
Status: RESOLVED FIXED    
Severity: regression    
Priority: P2    
Version: 3.5-dev   
Target Milestone: ---   
Hardware: All   
OS: All   
Attachments: The xls file created by test code

Description Sujeet Singh 2009-06-16 11:24:42 UTC
Created attachment 23817 [details]
The xls file created by test code

The hyperlink created by POI for inter-sheet and file does not work. The same
code work fine for XSSF. Below is the test code.


public class HyperLinkTest extends TestCase {

	public void testClone() throws FileNotFoundException, IOException {
		HSSFWorkbook wb = new HSSFWorkbook(); // or new HSSFWorkbook();
		CreationHelper createHelper = wb.getCreationHelper();

		// cell style for hyperlinks
		// by default hypelrinks are blue and underlined
		CellStyle hlink_style = wb.createCellStyle();
		Font hlink_font = wb.createFont();
		hlink_font.setUnderline(Font.U_SINGLE);
		hlink_font.setColor(IndexedColors.BLUE.getIndex());
		hlink_style.setFont(hlink_font);

		Cell cell;
		Sheet sheet = wb.createSheet("Hyperlinks");
		// URL
		cell = sheet.createRow(0).createCell((short) 0);
		cell.setCellValue("URL Link");

		Hyperlink link = createHelper.createHyperlink(Hyperlink.LINK_URL);
		link.setAddress("http://poi.apache.org/");
		cell.setHyperlink(link);
		cell.setCellStyle(hlink_style);

		// link to a file in the current directory
		cell = sheet.createRow(1).createCell((short) 0);
		cell.setCellValue("File Link");
		link = createHelper.createHyperlink(Hyperlink.LINK_FILE);
		link.setAddress("link1.xls");
		cell.setHyperlink(link);
		cell.setCellStyle(hlink_style);

		// e-mail link
		cell = sheet.createRow(2).createCell((short) 0);
		cell.setCellValue("Email Link");
		link = createHelper.createHyperlink(Hyperlink.LINK_EMAIL);
		// note, if subject contains white spaces, make sure they are
		// url-encoded
		link.setAddress("mailto:poi@apache.org?subject=Hyperlinks");
		cell.setHyperlink(link);
		cell.setCellStyle(hlink_style);

		// link to a place in this workbook

		// create a target sheet and cell
		Sheet sheet2 = wb.createSheet("Target Sheet");
		sheet2.createRow(0).createCell((short) 0).setCellValue("Target Cell");

		cell = sheet.createRow(3).createCell((short) 0);
		cell.setCellValue("Worksheet Link");
		Hyperlink link2 = createHelper.createHyperlink(Hyperlink.LINK_DOCUMENT);
		link2.setAddress("'Target Sheet'!A1");
		cell.setHyperlink(link2);
		cell.setCellStyle(hlink_style);

		FileOutputStream out = new FileOutputStream("hyperinks.xls");
		wb.write(out);
		out.close();
	}
}
Comment 1 Yegor Kozlov 2009-06-19 03:45:26 UTC
Fixed in 786442. The regression was caused by r719546 committed in November 2008. 

Thanks,
Yegor