mirror of
https://github.com/apache/poi.git
synced 2025-03-05 16:39:22 +00:00
Bug 69265: Add test which verifies that Hyperlink Type "Email" is not supported for HSSF
Also update JavaDoc slightly to describe the special handling of HyperlinkType.EMAIL git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1923050 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
parent
3aad12021a
commit
4f21f5280a
@ -25,7 +25,7 @@ public enum HyperlinkType {
|
|||||||
/** Not a hyperlink */
|
/** Not a hyperlink */
|
||||||
@Internal
|
@Internal
|
||||||
NONE(-1),
|
NONE(-1),
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Link to an existing file or web page
|
* Link to an existing file or web page
|
||||||
*/
|
*/
|
||||||
@ -37,7 +37,10 @@ public enum HyperlinkType {
|
|||||||
DOCUMENT(2),
|
DOCUMENT(2),
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Link to an E-mail address
|
* Link to an E-mail address.
|
||||||
|
*
|
||||||
|
* Please note that this currently only works if the address in the hyperlink
|
||||||
|
* uses the prefix "mailto:" as the binary formats do not persis this type.
|
||||||
*/
|
*/
|
||||||
EMAIL(3),
|
EMAIL(3),
|
||||||
|
|
||||||
@ -45,13 +48,13 @@ public enum HyperlinkType {
|
|||||||
* Link to a file
|
* Link to a file
|
||||||
*/
|
*/
|
||||||
FILE(4);
|
FILE(4);
|
||||||
|
|
||||||
|
|
||||||
/** @deprecated POI 3.15 beta 3 */
|
/** @deprecated POI 3.15 beta 3 */
|
||||||
@Internal(since="3.15 beta 3")
|
@Internal(since="3.15 beta 3")
|
||||||
@Deprecated
|
@Deprecated
|
||||||
private final int code;
|
private final int code;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* The codes don't have any real meaning.
|
* The codes don't have any real meaning.
|
||||||
* They are bytes that are read in and written out from HSSF, HSLF, XSSF, and XSLF are different
|
* They are bytes that are read in and written out from HSSF, HSLF, XSSF, and XSLF are different
|
||||||
@ -66,7 +69,7 @@ public enum HyperlinkType {
|
|||||||
HyperlinkType(int code) {
|
HyperlinkType(int code) {
|
||||||
this.code = code;
|
this.code = code;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @deprecated POI 3.15 beta 3
|
* @deprecated POI 3.15 beta 3
|
||||||
*
|
*
|
||||||
|
@ -21,11 +21,14 @@ import static org.junit.jupiter.api.Assertions.assertEquals;
|
|||||||
import static org.junit.jupiter.api.Assertions.assertNotEquals;
|
import static org.junit.jupiter.api.Assertions.assertNotEquals;
|
||||||
import static org.junit.jupiter.api.Assertions.assertNotSame;
|
import static org.junit.jupiter.api.Assertions.assertNotSame;
|
||||||
|
|
||||||
|
import java.io.ByteArrayInputStream;
|
||||||
|
import java.io.ByteArrayOutputStream;
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
import org.apache.poi.common.usermodel.HyperlinkType;
|
import org.apache.poi.common.usermodel.HyperlinkType;
|
||||||
import org.apache.poi.ss.ITestDataProvider;
|
import org.apache.poi.ss.ITestDataProvider;
|
||||||
|
import org.apache.poi.ss.SpreadsheetVersion;
|
||||||
import org.junit.jupiter.api.Test;
|
import org.junit.jupiter.api.Test;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -142,5 +145,119 @@ public abstract class BaseTestHyperlink {
|
|||||||
wb.close();
|
wb.close();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
void testHyperlinkEmailType69265_https() throws IOException {
|
||||||
|
boolean isHSSF = _testDataProvider.getSpreadsheetVersion() == SpreadsheetVersion.EXCEL97;
|
||||||
|
|
||||||
|
try (ByteArrayOutputStream out = new ByteArrayOutputStream()) {
|
||||||
|
try (Workbook workbook = _testDataProvider.createWorkbook()) {
|
||||||
|
Sheet sheet = workbook.createSheet("Hyperlink Example");
|
||||||
|
|
||||||
|
Row row = sheet.createRow(0);
|
||||||
|
Cell cell = row.createCell(0);
|
||||||
|
|
||||||
|
// Create a hyperlink
|
||||||
|
CreationHelper createHelper = workbook.getCreationHelper();
|
||||||
|
Hyperlink hyperlink = createHelper.createHyperlink(HyperlinkType.EMAIL);
|
||||||
|
hyperlink.setLabel("mylabel");
|
||||||
|
hyperlink.setAddress("https://www.example.com");
|
||||||
|
|
||||||
|
// Set the label and the hyperlink
|
||||||
|
cell.setCellValue("Click here");
|
||||||
|
cell.setHyperlink(hyperlink);
|
||||||
|
|
||||||
|
// Get the cell value and hyperlink address
|
||||||
|
assertEquals("Click here", cell.getStringCellValue());
|
||||||
|
Hyperlink cellHyperlink = cell.getHyperlink();
|
||||||
|
assertEquals("https://www.example.com", cellHyperlink.getAddress());
|
||||||
|
|
||||||
|
// HSSF does not support Email, thus falls back to URL, HSSF also uses a hardcoded "label"
|
||||||
|
assertEquals(
|
||||||
|
isHSSF ? HyperlinkType.URL : HyperlinkType.EMAIL,
|
||||||
|
cellHyperlink.getType());
|
||||||
|
assertEquals(
|
||||||
|
isHSSF ? "url" : "mylabel",
|
||||||
|
cellHyperlink.getLabel());
|
||||||
|
|
||||||
|
workbook.write(out);
|
||||||
|
}
|
||||||
|
|
||||||
|
out.flush();
|
||||||
|
|
||||||
|
try (Workbook wbBack = WorkbookFactory.create(new ByteArrayInputStream(out.toByteArray()))) {
|
||||||
|
Sheet sheet = wbBack.getSheet("Hyperlink Example");
|
||||||
|
Row row = sheet.getRow(0);
|
||||||
|
Cell cell = row.getCell(0);
|
||||||
|
|
||||||
|
Hyperlink hyperlink = cell.getHyperlink();
|
||||||
|
|
||||||
|
// when not using "mailto:", it is reverted back to URL currently
|
||||||
|
assertEquals(
|
||||||
|
HyperlinkType.URL,
|
||||||
|
hyperlink.getType());
|
||||||
|
assertEquals(
|
||||||
|
isHSSF ? "url" : "mylabel",
|
||||||
|
hyperlink.getLabel());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
void testHyperlinkEmailType69265_mailto() throws IOException {
|
||||||
|
boolean isHSSF = _testDataProvider.getSpreadsheetVersion() == SpreadsheetVersion.EXCEL97;
|
||||||
|
|
||||||
|
try (ByteArrayOutputStream out = new ByteArrayOutputStream()) {
|
||||||
|
try (Workbook workbook = _testDataProvider.createWorkbook()) {
|
||||||
|
Sheet sheet = workbook.createSheet("Hyperlink Example");
|
||||||
|
|
||||||
|
Row row = sheet.createRow(0);
|
||||||
|
Cell cell = row.createCell(0);
|
||||||
|
|
||||||
|
// Create a hyperlink
|
||||||
|
CreationHelper createHelper = workbook.getCreationHelper();
|
||||||
|
Hyperlink hyperlink = createHelper.createHyperlink(HyperlinkType.EMAIL);
|
||||||
|
hyperlink.setLabel("mylabel");
|
||||||
|
hyperlink.setAddress("mailto://www.example.com");
|
||||||
|
|
||||||
|
// Set the label and the hyperlink
|
||||||
|
cell.setCellValue("Click here");
|
||||||
|
cell.setHyperlink(hyperlink);
|
||||||
|
|
||||||
|
// Get the cell value and hyperlink address
|
||||||
|
assertEquals("Click here", cell.getStringCellValue());
|
||||||
|
Hyperlink cellHyperlink = cell.getHyperlink();
|
||||||
|
assertEquals("mailto://www.example.com", cellHyperlink.getAddress());
|
||||||
|
|
||||||
|
// "mailto:" is converted to type "EMAIL"
|
||||||
|
assertEquals(
|
||||||
|
HyperlinkType.EMAIL,
|
||||||
|
cellHyperlink.getType());
|
||||||
|
assertEquals(
|
||||||
|
isHSSF ? "url" : "mylabel",
|
||||||
|
cellHyperlink.getLabel());
|
||||||
|
|
||||||
|
workbook.write(out);
|
||||||
|
}
|
||||||
|
|
||||||
|
out.flush();
|
||||||
|
|
||||||
|
try (Workbook wbBack = WorkbookFactory.create(new ByteArrayInputStream(out.toByteArray()))) {
|
||||||
|
Sheet sheet = wbBack.getSheet("Hyperlink Example");
|
||||||
|
Row row = sheet.getRow(0);
|
||||||
|
Cell cell = row.getCell(0);
|
||||||
|
|
||||||
|
Hyperlink hyperlink = cell.getHyperlink();
|
||||||
|
|
||||||
|
// "mailto:" is converted to type "EMAIL"
|
||||||
|
assertEquals(
|
||||||
|
HyperlinkType.EMAIL,
|
||||||
|
hyperlink.getType());
|
||||||
|
assertEquals(
|
||||||
|
isHSSF ? "url" : "mylabel",
|
||||||
|
hyperlink.getLabel());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
public abstract Hyperlink copyHyperlink(Hyperlink link);
|
public abstract Hyperlink copyHyperlink(Hyperlink link);
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user