Patch from hishidama to add Cell.removeHyperlink(). This closes #13 from github
git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1637562 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
parent
89baa23ab6
commit
82ee923858
@ -1062,11 +1062,17 @@ public class HSSFCell implements Cell {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Assign a hyperlink to this cell
|
* Assign a hyperlink to this cell. If the supplied hyperlink is null, the
|
||||||
|
* hyperlink for this cell will be removed.
|
||||||
*
|
*
|
||||||
* @param hyperlink hyperlink associated with this cell
|
* @param hyperlink hyperlink associated with this cell
|
||||||
*/
|
*/
|
||||||
public void setHyperlink(Hyperlink hyperlink){
|
public void setHyperlink(Hyperlink hyperlink){
|
||||||
|
if (hyperlink == null) {
|
||||||
|
removeHyperlink();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
HSSFHyperlink link = (HSSFHyperlink)hyperlink;
|
HSSFHyperlink link = (HSSFHyperlink)hyperlink;
|
||||||
|
|
||||||
link.setFirstRow(_record.getRow());
|
link.setFirstRow(_record.getRow());
|
||||||
@ -1091,6 +1097,23 @@ public class HSSFCell implements Cell {
|
|||||||
int eofLoc = records.size() - 1;
|
int eofLoc = records.size() - 1;
|
||||||
records.add( eofLoc, link.record );
|
records.add( eofLoc, link.record );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Removes the hyperlink for this cell, if there is one.
|
||||||
|
*/
|
||||||
|
public void removeHyperlink() {
|
||||||
|
for (Iterator<RecordBase> it = _sheet.getSheet().getRecords().iterator(); it.hasNext();) {
|
||||||
|
RecordBase rec = it.next();
|
||||||
|
if (rec instanceof HyperlinkRecord) {
|
||||||
|
HyperlinkRecord link = (HyperlinkRecord) rec;
|
||||||
|
if (link.getFirstColumn() == _record.getColumn() && link.getFirstRow() == _record.getRow()) {
|
||||||
|
it.remove();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Only valid for formula cells
|
* Only valid for formula cells
|
||||||
* @return one of ({@link #CELL_TYPE_NUMERIC}, {@link #CELL_TYPE_STRING},
|
* @return one of ({@link #CELL_TYPE_NUMERIC}, {@link #CELL_TYPE_STRING},
|
||||||
|
@ -380,6 +380,11 @@ public interface Cell {
|
|||||||
*/
|
*/
|
||||||
void setHyperlink(Hyperlink link);
|
void setHyperlink(Hyperlink link);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Removes the hyperlink for this cell, if there is one.
|
||||||
|
*/
|
||||||
|
void removeHyperlink();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Only valid for array formula cells
|
* Only valid for array formula cells
|
||||||
*
|
*
|
||||||
|
@ -572,12 +572,18 @@ public class SXSSFCell implements Cell
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Assign a hyperlink to this cell
|
* Assign a hyperlink to this cell. If the supplied hyperlink is null, the
|
||||||
|
* hyperlink for this cell will be removed.
|
||||||
*
|
*
|
||||||
* @param link hyperlink associated with this cell
|
* @param link hyperlink associated with this cell
|
||||||
*/
|
*/
|
||||||
public void setHyperlink(Hyperlink link)
|
public void setHyperlink(Hyperlink link)
|
||||||
{
|
{
|
||||||
|
if (link == null) {
|
||||||
|
removeHyperlink();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
setProperty(Property.HYPERLINK,link);
|
setProperty(Property.HYPERLINK,link);
|
||||||
|
|
||||||
XSSFHyperlink xssfobj = (XSSFHyperlink)link;
|
XSSFHyperlink xssfobj = (XSSFHyperlink)link;
|
||||||
@ -590,6 +596,16 @@ public class SXSSFCell implements Cell
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Removes the hyperlink for this cell, if there is one.
|
||||||
|
*/
|
||||||
|
public void removeHyperlink()
|
||||||
|
{
|
||||||
|
removeProperty(Property.HYPERLINK);
|
||||||
|
|
||||||
|
((SXSSFSheet) getSheet())._sh.removeHyperlink(getRowIndex(), getColumnIndex());
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Only valid for array formula cells
|
* Only valid for array formula cells
|
||||||
*
|
*
|
||||||
|
@ -947,12 +947,18 @@ public final class XSSFCell implements Cell {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Assign a hyperlink to this cell
|
* Assign a hyperlink to this cell. If the supplied hyperlink is null, the
|
||||||
|
* hyperlink for this cell will be removed.
|
||||||
*
|
*
|
||||||
* @param hyperlink the hyperlink to associate with this cell
|
* @param hyperlink the hyperlink to associate with this cell
|
||||||
*/
|
*/
|
||||||
@Override
|
@Override
|
||||||
public void setHyperlink(Hyperlink hyperlink) {
|
public void setHyperlink(Hyperlink hyperlink) {
|
||||||
|
if (hyperlink == null) {
|
||||||
|
removeHyperlink();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
XSSFHyperlink link = (XSSFHyperlink)hyperlink;
|
XSSFHyperlink link = (XSSFHyperlink)hyperlink;
|
||||||
|
|
||||||
// Assign to us
|
// Assign to us
|
||||||
@ -962,6 +968,14 @@ public final class XSSFCell implements Cell {
|
|||||||
getSheet().addHyperlink(link);
|
getSheet().addHyperlink(link);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Removes the hyperlink for this cell, if there is one.
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public void removeHyperlink() {
|
||||||
|
getSheet().removeHyperlink(_row.getRowNum(), _cellNum);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Returns the xml bean containing information about the cell's location (reference), value,
|
* Returns the xml bean containing information about the cell's location (reference), value,
|
||||||
* data type, formatting, and formula
|
* data type, formatting, and formula
|
||||||
|
@ -2742,6 +2742,24 @@ public class XSSFSheet extends POIXMLDocumentPart implements Sheet {
|
|||||||
hyperlinks.add(hyperlink);
|
hyperlinks.add(hyperlink);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Removes a hyperlink in the collection of hyperlinks on this sheet
|
||||||
|
*
|
||||||
|
* @param row row index
|
||||||
|
* @param column column index
|
||||||
|
*/
|
||||||
|
@Internal
|
||||||
|
public void removeHyperlink(int row, int column) {
|
||||||
|
String ref = new CellReference(row, column).formatAsString();
|
||||||
|
for (Iterator<XSSFHyperlink> it = hyperlinks.iterator(); it.hasNext();) {
|
||||||
|
XSSFHyperlink hyperlink = it.next();
|
||||||
|
if (hyperlink.getCellRef().equals(ref)) {
|
||||||
|
it.remove();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Return location of the active cell, e.g. <code>A1</code>.
|
* Return location of the active cell, e.g. <code>A1</code>.
|
||||||
*
|
*
|
||||||
|
@ -25,6 +25,8 @@ import javax.xml.namespace.QName;
|
|||||||
|
|
||||||
import org.apache.poi.ss.usermodel.BaseTestCell;
|
import org.apache.poi.ss.usermodel.BaseTestCell;
|
||||||
import org.apache.poi.ss.usermodel.Cell;
|
import org.apache.poi.ss.usermodel.Cell;
|
||||||
|
import org.apache.poi.ss.usermodel.CreationHelper;
|
||||||
|
import org.apache.poi.ss.usermodel.Hyperlink;
|
||||||
import org.apache.poi.ss.usermodel.Row;
|
import org.apache.poi.ss.usermodel.Row;
|
||||||
import org.apache.poi.ss.usermodel.Sheet;
|
import org.apache.poi.ss.usermodel.Sheet;
|
||||||
import org.apache.poi.ss.usermodel.Workbook;
|
import org.apache.poi.ss.usermodel.Workbook;
|
||||||
@ -168,4 +170,27 @@ public class TestSXSSFCell extends BaseTestCell {
|
|||||||
assertEquals("some", wb.getSheetAt(0).getRow(0).getCell(0).getStringCellValue());
|
assertEquals("some", wb.getSheetAt(0).getRow(0).getCell(0).getStringCellValue());
|
||||||
assertEquals("24", wb.getSheetAt(0).getRow(0).getCell(1).getStringCellValue());
|
assertEquals("24", wb.getSheetAt(0).getRow(0).getCell(1).getStringCellValue());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void testRemoveHyperlink(){
|
||||||
|
Workbook wb = _testDataProvider.createWorkbook();
|
||||||
|
Sheet sh = wb.createSheet("test");
|
||||||
|
Row row = sh.createRow(0);
|
||||||
|
CreationHelper helper = wb.getCreationHelper();
|
||||||
|
|
||||||
|
Cell cell1 = row.createCell(1);
|
||||||
|
Hyperlink link1 = helper.createHyperlink(Hyperlink.LINK_URL);
|
||||||
|
cell1.setHyperlink(link1);
|
||||||
|
assertNotNull(cell1.getHyperlink());
|
||||||
|
cell1.removeHyperlink();
|
||||||
|
assertNull(cell1.getHyperlink());
|
||||||
|
|
||||||
|
Cell cell2 = row.createCell(0);
|
||||||
|
Hyperlink link2 = helper.createHyperlink(Hyperlink.LINK_URL);
|
||||||
|
cell2.setHyperlink(link2);
|
||||||
|
assertNotNull(cell2.getHyperlink());
|
||||||
|
cell2.setHyperlink(null);
|
||||||
|
assertNull(cell2.getHyperlink());
|
||||||
|
|
||||||
|
_testDataProvider.writeOutAndReadBack(wb);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -22,6 +22,7 @@ import java.io.IOException;
|
|||||||
import org.apache.poi.ss.usermodel.BaseTestCell;
|
import org.apache.poi.ss.usermodel.BaseTestCell;
|
||||||
import org.apache.poi.ss.usermodel.Cell;
|
import org.apache.poi.ss.usermodel.Cell;
|
||||||
import org.apache.poi.ss.usermodel.DataFormatter;
|
import org.apache.poi.ss.usermodel.DataFormatter;
|
||||||
|
import org.apache.poi.ss.usermodel.Hyperlink;
|
||||||
import org.apache.poi.ss.usermodel.Row;
|
import org.apache.poi.ss.usermodel.Row;
|
||||||
import org.apache.poi.ss.usermodel.Sheet;
|
import org.apache.poi.ss.usermodel.Sheet;
|
||||||
import org.apache.poi.ss.usermodel.Workbook;
|
import org.apache.poi.ss.usermodel.Workbook;
|
||||||
@ -372,4 +373,25 @@ public final class TestXSSFCell extends BaseTestCell {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void testRemoveHyperlink() {
|
||||||
|
final Workbook wb = new XSSFWorkbook();
|
||||||
|
final Sheet sheet = wb.createSheet();
|
||||||
|
Row row = sheet.createRow(0);
|
||||||
|
|
||||||
|
Cell cell1 = row.createCell(1);
|
||||||
|
Hyperlink link1 = new XSSFHyperlink(Hyperlink.LINK_URL);
|
||||||
|
cell1.setHyperlink(link1);
|
||||||
|
assertNotNull(cell1.getHyperlink());
|
||||||
|
cell1.removeHyperlink();
|
||||||
|
assertNull(cell1.getHyperlink());
|
||||||
|
|
||||||
|
Cell cell2 = row.createCell(0);
|
||||||
|
Hyperlink link2 = new XSSFHyperlink(Hyperlink.LINK_URL);
|
||||||
|
cell2.setHyperlink(link2);
|
||||||
|
assertNotNull(cell2.getHyperlink());
|
||||||
|
cell2.setHyperlink(null);
|
||||||
|
assertNull(cell2.getHyperlink());
|
||||||
|
|
||||||
|
XSSFTestDataSamples.writeOutAndReadBack(wb);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -34,6 +34,7 @@ import org.apache.poi.ss.SpreadsheetVersion;
|
|||||||
import org.apache.poi.ss.usermodel.BaseTestCell;
|
import org.apache.poi.ss.usermodel.BaseTestCell;
|
||||||
import org.apache.poi.ss.usermodel.Cell;
|
import org.apache.poi.ss.usermodel.Cell;
|
||||||
import org.apache.poi.ss.usermodel.ErrorConstants;
|
import org.apache.poi.ss.usermodel.ErrorConstants;
|
||||||
|
import org.apache.poi.ss.usermodel.Hyperlink;
|
||||||
import org.apache.poi.ss.usermodel.RichTextString;
|
import org.apache.poi.ss.usermodel.RichTextString;
|
||||||
import org.apache.poi.ss.usermodel.Sheet;
|
import org.apache.poi.ss.usermodel.Sheet;
|
||||||
import org.apache.poi.ss.usermodel.Workbook;
|
import org.apache.poi.ss.usermodel.Workbook;
|
||||||
@ -253,6 +254,26 @@ public final class TestHSSFCell extends BaseTestCell {
|
|||||||
assertEquals(1, link2.getFirstColumn());
|
assertEquals(1, link2.getFirstColumn());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void testRemoveHyperlink() {
|
||||||
|
HSSFWorkbook wb = new HSSFWorkbook();
|
||||||
|
HSSFSheet sheet = wb.createSheet();
|
||||||
|
HSSFRow row = sheet.createRow(0);
|
||||||
|
|
||||||
|
HSSFCell cell1 = row.createCell(1);
|
||||||
|
HSSFHyperlink link1 = new HSSFHyperlink(Hyperlink.LINK_URL);
|
||||||
|
assertNotNull(link1);
|
||||||
|
cell1.removeHyperlink();
|
||||||
|
assertNull(cell1.getHyperlink());
|
||||||
|
|
||||||
|
HSSFCell cell2 = row.createCell(0);
|
||||||
|
HSSFHyperlink link2 = new HSSFHyperlink(Hyperlink.LINK_URL);
|
||||||
|
assertNotNull(link2);
|
||||||
|
cell2.setHyperlink(null);
|
||||||
|
assertNull(cell2.getHyperlink());
|
||||||
|
|
||||||
|
HSSFTestDataSamples.writeOutAndReadBack(wb);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Test to ensure we can only assign cell styles that belong
|
* Test to ensure we can only assign cell styles that belong
|
||||||
* to our workbook, and not those from other workbooks.
|
* to our workbook, and not those from other workbooks.
|
||||||
|
Loading…
Reference in New Issue
Block a user