mirror of https://github.com/apache/poi.git
Shift comments support over onto new style XSSFModel, in preparation for readings and writing existing ones
git-svn-id: https://svn.apache.org/repos/asf/poi/branches/ooxml@643204 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
parent
117e95f063
commit
4361861502
|
@ -1155,7 +1155,8 @@ Examples:
|
||||||
degenerate case of Named Range in that the 'group of cells' contains exactly one
|
degenerate case of Named Range in that the 'group of cells' contains exactly one
|
||||||
cell. You can create as well as refer to cells in a workbook by their named range.
|
cell. You can create as well as refer to cells in a workbook by their named range.
|
||||||
When working with Named Ranges, the classes: org.apache.poi.hssf.util.CellReference and
|
When working with Named Ranges, the classes: org.apache.poi.hssf.util.CellReference and
|
||||||
& org.apache.poi.hssf.util.AreaReference are used.
|
& org.apache.poi.hssf.util.AreaReference are used (these
|
||||||
|
work for both XSSF and HSSF, despite the package name).
|
||||||
</p>
|
</p>
|
||||||
<p>
|
<p>
|
||||||
Creating Named Range / Named Cell
|
Creating Named Range / Named Cell
|
||||||
|
@ -1163,28 +1164,27 @@ Examples:
|
||||||
<source>
|
<source>
|
||||||
// setup code
|
// setup code
|
||||||
String sname = "TestSheet", cname = "TestName", cvalue = "TestVal";
|
String sname = "TestSheet", cname = "TestName", cvalue = "TestVal";
|
||||||
HSSFWorkbook wb = new HSSFWorkbook();
|
Workbook wb = new HSSFWorkbook();
|
||||||
HSSFSheet sheet = wb.createSheet(sname);
|
Sheet sheet = wb.createSheet(sname);
|
||||||
sheet.createRow(0).createCell((short) 0).setCellValue(cvalue);
|
sheet.createRow(0).createCell((short) 0).setCellValue(cvalue);
|
||||||
|
|
||||||
// 1. create named range for a single cell using areareference
|
// 1. create named range for a single cell using areareference
|
||||||
HSSFName namedCell = wb.createName();
|
Name namedCell = wb.createName();
|
||||||
namedCell.setNameName(cname);
|
namedCell.setNameName(cname);
|
||||||
String reference = sname+"!A1:A1"; // area reference
|
String reference = sname+"!A1:A1"; // area reference
|
||||||
namedCell.setReference(reference);
|
namedCell.setReference(reference);
|
||||||
|
|
||||||
// 2. create named range for a single cell using cellreference
|
// 2. create named range for a single cell using cellreference
|
||||||
HSSFName namedCell = wb.createName();
|
Name namedCell = wb.createName();
|
||||||
namedCell.setNameName(cname);
|
namedCell.setNameName(cname);
|
||||||
String reference = sname+"!A1"; // cell reference
|
String reference = sname+"!A1"; // cell reference
|
||||||
namedCell.setReference(reference);
|
namedCell.setReference(reference);
|
||||||
|
|
||||||
// 3. create named range for an area using AreaReference
|
// 3. create named range for an area using AreaReference
|
||||||
HSSFName namedCell = wb.createName();
|
Name namedCell = wb.createName();
|
||||||
namedCell.setNameName(cname);
|
namedCell.setNameName(cname);
|
||||||
String reference = sname+"!A1:C5"; // area reference
|
String reference = sname+"!A1:C5"; // area reference
|
||||||
namedCell.setReference(reference);
|
namedCell.setReference(reference);
|
||||||
|
|
||||||
</source>
|
</source>
|
||||||
<p>
|
<p>
|
||||||
Reading from Named Range / Named Cell
|
Reading from Named Range / Named Cell
|
||||||
|
@ -1192,19 +1192,19 @@ Examples:
|
||||||
<source>
|
<source>
|
||||||
// setup code
|
// setup code
|
||||||
String cname = "TestName";
|
String cname = "TestName";
|
||||||
HSSFWorkbook wb = getMyWorkbook(); // retrieve workbook
|
Workbook wb = getMyWorkbook(); // retrieve workbook
|
||||||
|
|
||||||
// retrieve the named range
|
// retrieve the named range
|
||||||
int namedCellIdx = wb.getNameIndex(cellName);
|
int namedCellIdx = wb.getNameIndex(cellName);
|
||||||
HSSFName aNamedCell = wb.getNameAt(namedCellIdx);
|
Name aNamedCell = wb.getNameAt(namedCellIdx);
|
||||||
|
|
||||||
// retrieve the cell at the named range and test its contents
|
// retrieve the cell at the named range and test its contents
|
||||||
AreaReference aref = new AreaReference(aNamedCell.getReference());
|
AreaReference aref = new AreaReference(aNamedCell.getReference());
|
||||||
CellReference[] crefs = aref.getAllReferencedCells();
|
CellReference[] crefs = aref.getAllReferencedCells();
|
||||||
for (int i=0; i<crefs.length; i++) {
|
for (int i=0; i<crefs.length; i++) {
|
||||||
HSSFSheet s = wb.getSheet(crefs[i].getSheetName());
|
Sheet s = wb.getSheet(crefs[i].getSheetName());
|
||||||
HSSFRow r = sheet.getRow(crefs[i].getRow());
|
Row r = sheet.getRow(crefs[i].getRow());
|
||||||
HSSFCell c = r.getCell(crefs[i].getCol());
|
Cell c = r.getCell(crefs[i].getCol());
|
||||||
// extract the cell contents based on cell type etc.
|
// extract the cell contents based on cell type etc.
|
||||||
}
|
}
|
||||||
</source>
|
</source>
|
||||||
|
@ -1214,12 +1214,12 @@ Examples:
|
||||||
<source>
|
<source>
|
||||||
// Setup code
|
// Setup code
|
||||||
String cname = "TestName";
|
String cname = "TestName";
|
||||||
HSSFWorkbook wb = getMyWorkbook(); // retrieve workbook
|
Workbook wb = getMyWorkbook(); // retrieve workbook
|
||||||
|
|
||||||
// Retrieve the named range
|
// Retrieve the named range
|
||||||
// Will be something like "$C$10,$D$12:$D$14";
|
// Will be something like "$C$10,$D$12:$D$14";
|
||||||
int namedCellIdx = wb.getNameIndex(cellName);
|
int namedCellIdx = wb.getNameIndex(cellName);
|
||||||
HSSFName aNamedCell = wb.getNameAt(namedCellIdx);
|
Name aNamedCell = wb.getNameAt(namedCellIdx);
|
||||||
|
|
||||||
// Retrieve the cell at the named range and test its contents
|
// Retrieve the cell at the named range and test its contents
|
||||||
// Will get back one AreaReference for C10, and
|
// Will get back one AreaReference for C10, and
|
||||||
|
@ -1231,18 +1231,18 @@ Examples:
|
||||||
CellReference[] crefs = arefs[i].getCells();
|
CellReference[] crefs = arefs[i].getCells();
|
||||||
for (int j=0; j<crefs.length; j++) {
|
for (int j=0; j<crefs.length; j++) {
|
||||||
// Check it turns into real stuff
|
// Check it turns into real stuff
|
||||||
HSSFSheet s = wb.getSheet(crefs[j].getSheetName());
|
Sheet s = wb.getSheet(crefs[j].getSheetName());
|
||||||
HSSFRow r = s.getRow(crefs[j].getRow());
|
Row r = s.getRow(crefs[j].getRow());
|
||||||
HSSFCell c = r.getCell(crefs[j].getCol());
|
Cell c = r.getCell(crefs[j].getCol());
|
||||||
// Do something with this corner cell
|
// Do something with this corner cell
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
</source>
|
</source>
|
||||||
</section>
|
</section>
|
||||||
<anchor id="CellComments"/>
|
<anchor id="CellComments"/>
|
||||||
<section><title>Cell Comments</title>
|
<section><title>Cell Comments - HSSF</title>
|
||||||
<p>
|
<p>
|
||||||
In Excel a comment is a kind of a text shape,
|
In HSSF Excel, a comment is a kind of a text shape,
|
||||||
so inserting a comment is very similar to placing a text box in a worksheet:
|
so inserting a comment is very similar to placing a text box in a worksheet:
|
||||||
</p>
|
</p>
|
||||||
<source>
|
<source>
|
||||||
|
@ -1320,6 +1320,90 @@ Examples:
|
||||||
comment = sheet.getCellComment(3, 1);
|
comment = sheet.getCellComment(3, 1);
|
||||||
</source>
|
</source>
|
||||||
</section>
|
</section>
|
||||||
|
|
||||||
|
<section><title>Cell Comments - XSSF</title>
|
||||||
|
<p>
|
||||||
|
In XSSF Excel, a comment is still a kind of a text shape, but
|
||||||
|
things are generally much simpler.
|
||||||
|
</p>
|
||||||
|
<source>
|
||||||
|
Workbook wb = new XSSFWorkbook();
|
||||||
|
CreationHelper createHelper = wb.getCreationHelper();
|
||||||
|
|
||||||
|
Sheet sheet = wb.createSheet("Cell comments in POI XSSF");
|
||||||
|
|
||||||
|
//create a cell in row 3
|
||||||
|
Cell cell1 = sheet.createRow(3).createCell((short)1);
|
||||||
|
cell1.setCellValue(createHelper.createRichTextString("Hello, World"));
|
||||||
|
|
||||||
|
//anchor defines size and position of the comment in worksheet
|
||||||
|
Comment comment1 = createHelper.createComment();
|
||||||
|
|
||||||
|
// set text in the comment
|
||||||
|
comment1.setString(createHelper.createRichTextString(
|
||||||
|
"We can set comments in POI"));
|
||||||
|
|
||||||
|
//set comment author.
|
||||||
|
//you can see it in the status bar when moving mouse over the commented cell
|
||||||
|
comment1.setAuthor("Apache Software Foundation");
|
||||||
|
|
||||||
|
// The first way to assign comment to a cell is via HSSFCell.setCellComment method
|
||||||
|
cell1.setCellComment(comment1);
|
||||||
|
|
||||||
|
|
||||||
|
//create another cell in row 6
|
||||||
|
Cell cell2 = sheet.createRow(6).createCell((short)1);
|
||||||
|
cell2.setCellValue(36.6);
|
||||||
|
|
||||||
|
|
||||||
|
Comment comment2 = createHelper.createComment();
|
||||||
|
//modify background color of the comment
|
||||||
|
comment2.setFillColor(204, 236, 255);
|
||||||
|
|
||||||
|
RichTextString string = createHelper.createRichTextString(
|
||||||
|
"Normal body temperature");
|
||||||
|
|
||||||
|
//apply custom font to the text in the comment
|
||||||
|
Font font = wb.createFont();
|
||||||
|
font.setFontName("Arial");
|
||||||
|
font.setFontHeightInPoints((short)10);
|
||||||
|
font.setBoldweight(Font.BOLDWEIGHT_BOLD);
|
||||||
|
font.setColor(Color.RED.index);
|
||||||
|
string.applyFont(font);
|
||||||
|
|
||||||
|
comment2.setString(string);
|
||||||
|
//by default comments are hidden. This one is always visible.
|
||||||
|
comment2.setVisible(true);
|
||||||
|
|
||||||
|
comment2.setAuthor("Bill Gates");
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The second way to assign comment to a cell is to implicitly specify its row and column.
|
||||||
|
* Note, it is possible to set row and column of a non-existing cell.
|
||||||
|
* It works, the commnet is visible.
|
||||||
|
*/
|
||||||
|
comment2.setRow(6);
|
||||||
|
comment2.setColumn((short)1);
|
||||||
|
|
||||||
|
FileOutputStream out = new FileOutputStream("poi_comment.xls");
|
||||||
|
wb.write(out);
|
||||||
|
out.close();
|
||||||
|
</source>
|
||||||
|
<p>
|
||||||
|
Reading cell comments
|
||||||
|
</p>
|
||||||
|
<source>
|
||||||
|
Cell cell = sheet.get(3).getColumn((short)1);
|
||||||
|
Comment comment = cell.getCellComment();
|
||||||
|
if (comment != null) {
|
||||||
|
RichTextString str = comment.getString();
|
||||||
|
String author = comment.getAuthor();
|
||||||
|
}
|
||||||
|
// alternatively you can retrieve cell comments by (row, column)
|
||||||
|
comment = sheet.getCellComment(3, 1);
|
||||||
|
</source>
|
||||||
|
</section>
|
||||||
|
|
||||||
<anchor id="Autofit"/>
|
<anchor id="Autofit"/>
|
||||||
<section><title>Adjust column width to fit the contents</title>
|
<section><title>Adjust column width to fit the contents</title>
|
||||||
<source>
|
<source>
|
||||||
|
|
|
@ -0,0 +1,38 @@
|
||||||
|
/* ====================================================================
|
||||||
|
Licensed to the Apache Software Foundation (ASF) under one or more
|
||||||
|
contributor license agreements. See the NOTICE file distributed with
|
||||||
|
this work for additional information regarding copyright ownership.
|
||||||
|
The ASF licenses this file to You under the Apache License, Version 2.0
|
||||||
|
(the "License"); you may not use this file except in compliance with
|
||||||
|
the License. You may obtain a copy of the License at
|
||||||
|
|
||||||
|
http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
|
||||||
|
Unless required by applicable law or agreed to in writing, software
|
||||||
|
distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
See the License for the specific language governing permissions and
|
||||||
|
limitations under the License.
|
||||||
|
==================================================================== */
|
||||||
|
|
||||||
|
package org.apache.poi.ss.usermodel;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Allows the getting and saving of cell comments,
|
||||||
|
* associated with a given sheet.
|
||||||
|
*/
|
||||||
|
public interface CommentsSource {
|
||||||
|
public String getAuthor(long authorId);
|
||||||
|
|
||||||
|
public int findAuthor(String author);
|
||||||
|
|
||||||
|
public Comment findCellComment(int row, int column);
|
||||||
|
|
||||||
|
public Comment findCellComment(String cellRef);
|
||||||
|
|
||||||
|
public void setCellComment (int row, int column, Comment comment);
|
||||||
|
|
||||||
|
public void setCellComment (String cellRef, Comment comment);
|
||||||
|
|
||||||
|
public Comment addComment();
|
||||||
|
}
|
|
@ -17,8 +17,6 @@
|
||||||
|
|
||||||
package org.apache.poi.ss.usermodel;
|
package org.apache.poi.ss.usermodel;
|
||||||
|
|
||||||
import java.io.IOException;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Allows the getting and saving of shared strings
|
* Allows the getting and saving of shared strings
|
||||||
*/
|
*/
|
||||||
|
|
|
@ -14,25 +14,59 @@
|
||||||
See the License for the specific language governing permissions and
|
See the License for the specific language governing permissions and
|
||||||
limitations under the License.
|
limitations under the License.
|
||||||
==================================================================== */
|
==================================================================== */
|
||||||
package org.apache.poi.xssf.usermodel.extensions;
|
package org.apache.poi.xssf.model;
|
||||||
|
|
||||||
|
import java.io.IOException;
|
||||||
|
import java.io.InputStream;
|
||||||
|
import java.io.OutputStream;
|
||||||
|
|
||||||
|
import org.apache.poi.ss.usermodel.Comment;
|
||||||
|
import org.apache.poi.ss.usermodel.CommentsSource;
|
||||||
import org.apache.poi.xssf.usermodel.XSSFComment;
|
import org.apache.poi.xssf.usermodel.XSSFComment;
|
||||||
import org.apache.poi.xssf.util.CellReference;
|
import org.apache.poi.xssf.util.CellReference;
|
||||||
|
import org.apache.xmlbeans.XmlException;
|
||||||
|
import org.apache.xmlbeans.XmlOptions;
|
||||||
import org.openxmlformats.schemas.spreadsheetml.x2006.main.CTAuthors;
|
import org.openxmlformats.schemas.spreadsheetml.x2006.main.CTAuthors;
|
||||||
import org.openxmlformats.schemas.spreadsheetml.x2006.main.CTComment;
|
import org.openxmlformats.schemas.spreadsheetml.x2006.main.CTComment;
|
||||||
import org.openxmlformats.schemas.spreadsheetml.x2006.main.CTCommentList;
|
import org.openxmlformats.schemas.spreadsheetml.x2006.main.CTCommentList;
|
||||||
import org.openxmlformats.schemas.spreadsheetml.x2006.main.CTComments;
|
import org.openxmlformats.schemas.spreadsheetml.x2006.main.CTComments;
|
||||||
|
import org.openxmlformats.schemas.spreadsheetml.x2006.main.CommentsDocument;
|
||||||
|
|
||||||
public class XSSFComments {
|
public class CommentsTable implements CommentsSource, XSSFModel {
|
||||||
|
|
||||||
private CTComments comments;
|
private CTComments comments;
|
||||||
|
|
||||||
public XSSFComments() {
|
public CommentsTable(InputStream is) throws IOException {
|
||||||
this(CTComments.Factory.newInstance());
|
readFrom(is);
|
||||||
|
}
|
||||||
|
public CommentsTable() {
|
||||||
|
comments = CTComments.Factory.newInstance();
|
||||||
|
}
|
||||||
|
/**
|
||||||
|
* For unit testing only!
|
||||||
|
*/
|
||||||
|
public CommentsTable(CTComments comments) {
|
||||||
|
this.comments = comments;
|
||||||
}
|
}
|
||||||
|
|
||||||
public XSSFComments(CTComments comments) {
|
public void readFrom(InputStream is) throws IOException {
|
||||||
this.comments = comments;
|
try {
|
||||||
|
CommentsDocument doc = CommentsDocument.Factory.parse(is);
|
||||||
|
comments = doc.getComments();
|
||||||
|
} catch (XmlException e) {
|
||||||
|
throw new IOException(e.getLocalizedMessage());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
public void writeTo(OutputStream out) throws IOException {
|
||||||
|
XmlOptions options = new XmlOptions();
|
||||||
|
options.setSaveOuter();
|
||||||
|
options.setUseDefaultNamespace();
|
||||||
|
|
||||||
|
// Requests use of whitespace for easier reading
|
||||||
|
options.setSavePrettyPrint();
|
||||||
|
|
||||||
|
CommentsDocument doc = CommentsDocument.Factory.newInstance(options);
|
||||||
|
doc.setComments(comments);
|
||||||
|
doc.save(out, options);
|
||||||
}
|
}
|
||||||
|
|
||||||
public String getAuthor(long authorId) {
|
public String getAuthor(long authorId) {
|
||||||
|
@ -61,17 +95,17 @@ public class XSSFComments {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setCellComment (int row, int column, XSSFComment comment) {
|
public void setCellComment (int row, int column, Comment comment) {
|
||||||
XSSFComment current = findCellComment(row, column);
|
XSSFComment current = findCellComment(row, column);
|
||||||
if (current == null) {
|
if (current == null) {
|
||||||
current = addComment();
|
current = addComment();
|
||||||
}
|
}
|
||||||
current = comment;
|
current = (XSSFComment)comment;
|
||||||
current.setRow(row);
|
current.setRow(row);
|
||||||
current.setColumn((short) column);
|
current.setColumn((short) column);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setCellComment (String cellRef, XSSFComment comment) {
|
public void setCellComment (String cellRef, Comment comment) {
|
||||||
CellReference cellReference = new CellReference(cellRef);
|
CellReference cellReference = new CellReference(cellRef);
|
||||||
setCellComment(cellReference.getRow(), cellReference.getCol(), comment);
|
setCellComment(cellReference.getRow(), cellReference.getCol(), comment);
|
||||||
}
|
}
|
||||||
|
@ -99,5 +133,4 @@ public class XSSFComments {
|
||||||
getCommentsAuthors().insertAuthor(index, author);
|
getCommentsAuthors().insertAuthor(index, author);
|
||||||
return index;
|
return index;
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
|
@ -17,8 +17,8 @@
|
||||||
package org.apache.poi.xssf.usermodel;
|
package org.apache.poi.xssf.usermodel;
|
||||||
|
|
||||||
import org.apache.poi.ss.usermodel.Comment;
|
import org.apache.poi.ss.usermodel.Comment;
|
||||||
|
import org.apache.poi.ss.usermodel.CommentsSource;
|
||||||
import org.apache.poi.ss.usermodel.RichTextString;
|
import org.apache.poi.ss.usermodel.RichTextString;
|
||||||
import org.apache.poi.xssf.usermodel.extensions.XSSFComments;
|
|
||||||
import org.apache.poi.xssf.usermodel.helpers.RichTextStringHelper;
|
import org.apache.poi.xssf.usermodel.helpers.RichTextStringHelper;
|
||||||
import org.apache.poi.xssf.util.CellReference;
|
import org.apache.poi.xssf.util.CellReference;
|
||||||
import org.openxmlformats.schemas.spreadsheetml.x2006.main.CTComment;
|
import org.openxmlformats.schemas.spreadsheetml.x2006.main.CTComment;
|
||||||
|
@ -27,14 +27,14 @@ import org.openxmlformats.schemas.spreadsheetml.x2006.main.CTRst;
|
||||||
public class XSSFComment implements Comment {
|
public class XSSFComment implements Comment {
|
||||||
|
|
||||||
private CTComment comment;
|
private CTComment comment;
|
||||||
private XSSFComments comments;
|
private CommentsSource comments;
|
||||||
|
|
||||||
public XSSFComment(XSSFComments comments, CTComment comment) {
|
public XSSFComment(CommentsSource comments, CTComment comment) {
|
||||||
this.comment = comment;
|
this.comment = comment;
|
||||||
this.comments = comments;
|
this.comments = comments;
|
||||||
}
|
}
|
||||||
|
|
||||||
public XSSFComment(XSSFComments sheetComments) {
|
public XSSFComment(CommentsSource sheetComments) {
|
||||||
this(sheetComments, CTComment.Factory.newInstance());
|
this(sheetComments, CTComment.Factory.newInstance());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -27,20 +27,19 @@ import org.apache.poi.hssf.util.PaneInformation;
|
||||||
import org.apache.poi.hssf.util.Region;
|
import org.apache.poi.hssf.util.Region;
|
||||||
import org.apache.poi.ss.usermodel.CellStyle;
|
import org.apache.poi.ss.usermodel.CellStyle;
|
||||||
import org.apache.poi.ss.usermodel.Comment;
|
import org.apache.poi.ss.usermodel.Comment;
|
||||||
|
import org.apache.poi.ss.usermodel.CommentsSource;
|
||||||
import org.apache.poi.ss.usermodel.Footer;
|
import org.apache.poi.ss.usermodel.Footer;
|
||||||
import org.apache.poi.ss.usermodel.Header;
|
import org.apache.poi.ss.usermodel.Header;
|
||||||
import org.apache.poi.ss.usermodel.Patriarch;
|
import org.apache.poi.ss.usermodel.Patriarch;
|
||||||
import org.apache.poi.ss.usermodel.PrintSetup;
|
import org.apache.poi.ss.usermodel.PrintSetup;
|
||||||
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.xssf.usermodel.extensions.XSSFComments;
|
import org.apache.poi.xssf.model.CommentsTable;
|
||||||
import org.apache.poi.xssf.usermodel.helpers.ColumnHelper;
|
import org.apache.poi.xssf.usermodel.helpers.ColumnHelper;
|
||||||
import org.apache.poi.xssf.util.CellReference;
|
import org.apache.poi.xssf.util.CellReference;
|
||||||
import org.apache.xmlbeans.XmlOptions;
|
import org.apache.xmlbeans.XmlOptions;
|
||||||
import org.openxmlformats.schemas.spreadsheetml.x2006.main.CTBreak;
|
import org.openxmlformats.schemas.spreadsheetml.x2006.main.CTBreak;
|
||||||
import org.openxmlformats.schemas.spreadsheetml.x2006.main.CTCol;
|
|
||||||
import org.openxmlformats.schemas.spreadsheetml.x2006.main.CTCols;
|
import org.openxmlformats.schemas.spreadsheetml.x2006.main.CTCols;
|
||||||
import org.openxmlformats.schemas.spreadsheetml.x2006.main.CTComments;
|
|
||||||
import org.openxmlformats.schemas.spreadsheetml.x2006.main.CTDialogsheet;
|
import org.openxmlformats.schemas.spreadsheetml.x2006.main.CTDialogsheet;
|
||||||
import org.openxmlformats.schemas.spreadsheetml.x2006.main.CTHeaderFooter;
|
import org.openxmlformats.schemas.spreadsheetml.x2006.main.CTHeaderFooter;
|
||||||
import org.openxmlformats.schemas.spreadsheetml.x2006.main.CTPageBreak;
|
import org.openxmlformats.schemas.spreadsheetml.x2006.main.CTPageBreak;
|
||||||
|
@ -59,15 +58,13 @@ import org.openxmlformats.schemas.spreadsheetml.x2006.main.CTWorksheet;
|
||||||
|
|
||||||
|
|
||||||
public class XSSFSheet implements Sheet {
|
public class XSSFSheet implements Sheet {
|
||||||
|
|
||||||
protected CTSheet sheet;
|
protected CTSheet sheet;
|
||||||
protected CTWorksheet worksheet;
|
protected CTWorksheet worksheet;
|
||||||
protected CTDialogsheet dialogsheet;
|
protected CTDialogsheet dialogsheet;
|
||||||
protected CTComments comments;
|
|
||||||
protected List<Row> rows;
|
protected List<Row> rows;
|
||||||
protected ColumnHelper columnHelper;
|
protected ColumnHelper columnHelper;
|
||||||
protected XSSFWorkbook workbook;
|
protected XSSFWorkbook workbook;
|
||||||
protected XSSFComments sheetComments;
|
protected CommentsSource sheetComments;
|
||||||
|
|
||||||
public static final short LeftMargin = 0;
|
public static final short LeftMargin = 0;
|
||||||
public static final short RightMargin = 1;
|
public static final short RightMargin = 1;
|
||||||
|
@ -76,7 +73,7 @@ public class XSSFSheet implements Sheet {
|
||||||
public static final short HeaderMargin = 4;
|
public static final short HeaderMargin = 4;
|
||||||
public static final short FooterMargin = 5;
|
public static final short FooterMargin = 5;
|
||||||
|
|
||||||
public XSSFSheet(CTSheet sheet, CTWorksheet worksheet, XSSFWorkbook workbook, XSSFComments sheetComments) {
|
public XSSFSheet(CTSheet sheet, CTWorksheet worksheet, XSSFWorkbook workbook, CommentsSource sheetComments) {
|
||||||
this(sheet, worksheet, workbook);
|
this(sheet, worksheet, workbook);
|
||||||
this.sheetComments = sheetComments;
|
this.sheetComments = sheetComments;
|
||||||
}
|
}
|
||||||
|
@ -908,18 +905,10 @@ public class XSSFSheet implements Sheet {
|
||||||
this.sheet = sheet;
|
this.sheet = sheet;
|
||||||
}
|
}
|
||||||
|
|
||||||
private XSSFComments getComments() {
|
private CommentsSource getComments() {
|
||||||
if (sheetComments == null) {
|
if (sheetComments == null) {
|
||||||
sheetComments = new XSSFComments(getCTComments());
|
sheetComments = new CommentsTable();
|
||||||
}
|
}
|
||||||
return sheetComments;
|
return sheetComments;
|
||||||
}
|
}
|
||||||
|
|
||||||
private CTComments getCTComments() {
|
|
||||||
if (comments == null) {
|
|
||||||
comments = CTComments.Factory.newInstance();
|
|
||||||
}
|
|
||||||
return comments;
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -15,7 +15,7 @@
|
||||||
limitations under the License.
|
limitations under the License.
|
||||||
==================================================================== */
|
==================================================================== */
|
||||||
|
|
||||||
package org.apache.poi.xssf.usermodel.extensions;
|
package org.apache.poi.xssf.model;
|
||||||
|
|
||||||
import org.apache.poi.xssf.usermodel.XSSFComment;
|
import org.apache.poi.xssf.usermodel.XSSFComment;
|
||||||
import org.openxmlformats.schemas.spreadsheetml.x2006.main.CTComment;
|
import org.openxmlformats.schemas.spreadsheetml.x2006.main.CTComment;
|
||||||
|
@ -26,7 +26,7 @@ import org.openxmlformats.schemas.spreadsheetml.x2006.main.CTRst;
|
||||||
import junit.framework.TestCase;
|
import junit.framework.TestCase;
|
||||||
|
|
||||||
|
|
||||||
public class TestXSSFComments extends TestCase {
|
public class TestCommentsTable extends TestCase {
|
||||||
|
|
||||||
private static final String TEST_A2_TEXT = "test A2 text";
|
private static final String TEST_A2_TEXT = "test A2 text";
|
||||||
private static final String TEST_A1_TEXT = "test A1 text";
|
private static final String TEST_A1_TEXT = "test A1 text";
|
||||||
|
@ -34,7 +34,7 @@ public class TestXSSFComments extends TestCase {
|
||||||
|
|
||||||
public void testfindAuthor() {
|
public void testfindAuthor() {
|
||||||
CTComments comments = CTComments.Factory.newInstance();
|
CTComments comments = CTComments.Factory.newInstance();
|
||||||
XSSFComments sheetComments = new XSSFComments(comments);
|
CommentsTable sheetComments = new CommentsTable(comments);
|
||||||
|
|
||||||
assertEquals(0, sheetComments.findAuthor(TEST_AUTHOR));
|
assertEquals(0, sheetComments.findAuthor(TEST_AUTHOR));
|
||||||
assertEquals(1, sheetComments.findAuthor("another author"));
|
assertEquals(1, sheetComments.findAuthor("another author"));
|
||||||
|
@ -43,7 +43,7 @@ public class TestXSSFComments extends TestCase {
|
||||||
|
|
||||||
public void testGetCellComment() {
|
public void testGetCellComment() {
|
||||||
CTComments comments = CTComments.Factory.newInstance();
|
CTComments comments = CTComments.Factory.newInstance();
|
||||||
XSSFComments sheetComments = new XSSFComments(comments);
|
CommentsTable sheetComments = new CommentsTable(comments);
|
||||||
CTCommentList commentList = comments.addNewCommentList();
|
CTCommentList commentList = comments.addNewCommentList();
|
||||||
|
|
||||||
// Create 2 comments for A1 and A" cells
|
// Create 2 comments for A1 and A" cells
|
||||||
|
@ -69,7 +69,7 @@ public class TestXSSFComments extends TestCase {
|
||||||
|
|
||||||
public void testSetCellComment() {
|
public void testSetCellComment() {
|
||||||
CTComments comments = CTComments.Factory.newInstance();
|
CTComments comments = CTComments.Factory.newInstance();
|
||||||
XSSFComments sheetComments = new XSSFComments(comments);
|
CommentsTable sheetComments = new CommentsTable(comments);
|
||||||
CTCommentList commentList = comments.addNewCommentList();
|
CTCommentList commentList = comments.addNewCommentList();
|
||||||
assertEquals(0, commentList.sizeOfCommentArray());
|
assertEquals(0, commentList.sizeOfCommentArray());
|
||||||
XSSFComment comment = new XSSFComment(sheetComments);
|
XSSFComment comment = new XSSFComment(sheetComments);
|
|
@ -33,7 +33,7 @@ import org.apache.poi.ss.usermodel.Row;
|
||||||
import org.apache.poi.ss.usermodel.SharedStringSource;
|
import org.apache.poi.ss.usermodel.SharedStringSource;
|
||||||
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;
|
||||||
import org.apache.poi.xssf.usermodel.extensions.XSSFComments;
|
import org.apache.poi.xssf.model.CommentsTable;
|
||||||
import org.openxmlformats.schemas.spreadsheetml.x2006.main.CTCell;
|
import org.openxmlformats.schemas.spreadsheetml.x2006.main.CTCell;
|
||||||
import org.openxmlformats.schemas.spreadsheetml.x2006.main.CTComment;
|
import org.openxmlformats.schemas.spreadsheetml.x2006.main.CTComment;
|
||||||
import org.openxmlformats.schemas.spreadsheetml.x2006.main.CTComments;
|
import org.openxmlformats.schemas.spreadsheetml.x2006.main.CTComments;
|
||||||
|
@ -235,7 +235,7 @@ public class TestXSSFCell extends TestCase {
|
||||||
CTSheet ctSheet = CTSheet.Factory.newInstance();
|
CTSheet ctSheet = CTSheet.Factory.newInstance();
|
||||||
CTWorksheet ctWorksheet = CTWorksheet.Factory.newInstance();
|
CTWorksheet ctWorksheet = CTWorksheet.Factory.newInstance();
|
||||||
CTComments ctComments = CTComments.Factory.newInstance();
|
CTComments ctComments = CTComments.Factory.newInstance();
|
||||||
XSSFComments sheetComments = new XSSFComments(ctComments);
|
CommentsTable sheetComments = new CommentsTable(ctComments);
|
||||||
XSSFSheet sheet = new XSSFSheet(ctSheet, ctWorksheet, workbook, sheetComments);
|
XSSFSheet sheet = new XSSFSheet(ctSheet, ctWorksheet, workbook, sheetComments);
|
||||||
assertNotNull(sheet);
|
assertNotNull(sheet);
|
||||||
|
|
||||||
|
@ -261,7 +261,7 @@ public class TestXSSFCell extends TestCase {
|
||||||
CTSheet ctSheet = CTSheet.Factory.newInstance();
|
CTSheet ctSheet = CTSheet.Factory.newInstance();
|
||||||
CTWorksheet ctWorksheet = CTWorksheet.Factory.newInstance();
|
CTWorksheet ctWorksheet = CTWorksheet.Factory.newInstance();
|
||||||
CTComments ctComments = CTComments.Factory.newInstance();
|
CTComments ctComments = CTComments.Factory.newInstance();
|
||||||
XSSFComments comments = new XSSFComments(ctComments);
|
CommentsTable comments = new CommentsTable(ctComments);
|
||||||
XSSFSheet sheet = new XSSFSheet(ctSheet, ctWorksheet, workbook, comments);
|
XSSFSheet sheet = new XSSFSheet(ctSheet, ctWorksheet, workbook, comments);
|
||||||
assertNotNull(sheet);
|
assertNotNull(sheet);
|
||||||
|
|
||||||
|
|
|
@ -19,7 +19,7 @@ package org.apache.poi.xssf.usermodel;
|
||||||
|
|
||||||
import org.apache.poi.hssf.usermodel.HSSFRichTextString;
|
import org.apache.poi.hssf.usermodel.HSSFRichTextString;
|
||||||
import org.apache.poi.ss.usermodel.RichTextString;
|
import org.apache.poi.ss.usermodel.RichTextString;
|
||||||
import org.apache.poi.xssf.usermodel.extensions.XSSFComments;
|
import org.apache.poi.xssf.model.CommentsTable;
|
||||||
import org.apache.poi.xssf.util.CellReference;
|
import org.apache.poi.xssf.util.CellReference;
|
||||||
import org.openxmlformats.schemas.spreadsheetml.x2006.main.CTAuthors;
|
import org.openxmlformats.schemas.spreadsheetml.x2006.main.CTAuthors;
|
||||||
import org.openxmlformats.schemas.spreadsheetml.x2006.main.CTComment;
|
import org.openxmlformats.schemas.spreadsheetml.x2006.main.CTComment;
|
||||||
|
@ -34,7 +34,7 @@ public class TestXSSFComment extends TestCase {
|
||||||
private static final String TEST_AUTHOR = "test_author";
|
private static final String TEST_AUTHOR = "test_author";
|
||||||
|
|
||||||
public void testConstructors() {
|
public void testConstructors() {
|
||||||
XSSFComments sheetComments = new XSSFComments();
|
CommentsTable sheetComments = new CommentsTable();
|
||||||
XSSFComment comment = new XSSFComment(sheetComments);
|
XSSFComment comment = new XSSFComment(sheetComments);
|
||||||
assertNotNull(comment);
|
assertNotNull(comment);
|
||||||
|
|
||||||
|
@ -44,7 +44,7 @@ public class TestXSSFComment extends TestCase {
|
||||||
}
|
}
|
||||||
|
|
||||||
public void testGetColumn() {
|
public void testGetColumn() {
|
||||||
XSSFComments sheetComments = new XSSFComments();
|
CommentsTable sheetComments = new CommentsTable();
|
||||||
CTComment ctComment = CTComment.Factory.newInstance();
|
CTComment ctComment = CTComment.Factory.newInstance();
|
||||||
ctComment.setRef("A1");
|
ctComment.setRef("A1");
|
||||||
XSSFComment comment = new XSSFComment(sheetComments, ctComment);
|
XSSFComment comment = new XSSFComment(sheetComments, ctComment);
|
||||||
|
@ -55,7 +55,7 @@ public class TestXSSFComment extends TestCase {
|
||||||
}
|
}
|
||||||
|
|
||||||
public void testGetRow() {
|
public void testGetRow() {
|
||||||
XSSFComments sheetComments = new XSSFComments();
|
CommentsTable sheetComments = new CommentsTable();
|
||||||
CTComment ctComment = CTComment.Factory.newInstance();
|
CTComment ctComment = CTComment.Factory.newInstance();
|
||||||
ctComment.setRef("A1");
|
ctComment.setRef("A1");
|
||||||
XSSFComment comment = new XSSFComment(sheetComments, ctComment);
|
XSSFComment comment = new XSSFComment(sheetComments, ctComment);
|
||||||
|
@ -72,14 +72,14 @@ public class TestXSSFComment extends TestCase {
|
||||||
ctAuthors.insertAuthor(0, TEST_AUTHOR);
|
ctAuthors.insertAuthor(0, TEST_AUTHOR);
|
||||||
ctComment.setAuthorId(0);
|
ctComment.setAuthorId(0);
|
||||||
|
|
||||||
XSSFComments sheetComments = new XSSFComments(ctComments);
|
CommentsTable sheetComments = new CommentsTable(ctComments);
|
||||||
XSSFComment comment = new XSSFComment(sheetComments, ctComment);
|
XSSFComment comment = new XSSFComment(sheetComments, ctComment);
|
||||||
assertNotNull(comment);
|
assertNotNull(comment);
|
||||||
assertEquals(TEST_AUTHOR, comment.getAuthor());
|
assertEquals(TEST_AUTHOR, comment.getAuthor());
|
||||||
}
|
}
|
||||||
|
|
||||||
public void testSetColumn() {
|
public void testSetColumn() {
|
||||||
XSSFComments sheetComments = new XSSFComments();
|
CommentsTable sheetComments = new CommentsTable();
|
||||||
CTComment ctComment = CTComment.Factory.newInstance();
|
CTComment ctComment = CTComment.Factory.newInstance();
|
||||||
XSSFComment comment = new XSSFComment(sheetComments, ctComment);
|
XSSFComment comment = new XSSFComment(sheetComments, ctComment);
|
||||||
comment.setColumn((short)3);
|
comment.setColumn((short)3);
|
||||||
|
@ -92,7 +92,7 @@ public class TestXSSFComment extends TestCase {
|
||||||
}
|
}
|
||||||
|
|
||||||
public void testSetRow() {
|
public void testSetRow() {
|
||||||
XSSFComments sheetComments = new XSSFComments();
|
CommentsTable sheetComments = new CommentsTable();
|
||||||
CTComment ctComment = CTComment.Factory.newInstance();
|
CTComment ctComment = CTComment.Factory.newInstance();
|
||||||
XSSFComment comment = new XSSFComment(sheetComments, ctComment);
|
XSSFComment comment = new XSSFComment(sheetComments, ctComment);
|
||||||
comment.setRow(20);
|
comment.setRow(20);
|
||||||
|
@ -105,7 +105,7 @@ public class TestXSSFComment extends TestCase {
|
||||||
}
|
}
|
||||||
|
|
||||||
public void testSetAuthor() {
|
public void testSetAuthor() {
|
||||||
XSSFComments sheetComments = new XSSFComments();
|
CommentsTable sheetComments = new CommentsTable();
|
||||||
CTComment ctComment = CTComment.Factory.newInstance();
|
CTComment ctComment = CTComment.Factory.newInstance();
|
||||||
XSSFComment comment = new XSSFComment(sheetComments, ctComment);
|
XSSFComment comment = new XSSFComment(sheetComments, ctComment);
|
||||||
comment.setAuthor(TEST_AUTHOR);
|
comment.setAuthor(TEST_AUTHOR);
|
||||||
|
@ -113,7 +113,7 @@ public class TestXSSFComment extends TestCase {
|
||||||
}
|
}
|
||||||
|
|
||||||
public void testSetString() {
|
public void testSetString() {
|
||||||
XSSFComments sheetComments = new XSSFComments();
|
CommentsTable sheetComments = new CommentsTable();
|
||||||
CTComment ctComment = CTComment.Factory.newInstance();
|
CTComment ctComment = CTComment.Factory.newInstance();
|
||||||
XSSFComment comment = new XSSFComment(sheetComments, ctComment);
|
XSSFComment comment = new XSSFComment(sheetComments, ctComment);
|
||||||
RichTextString richTextString = new HSSFRichTextString(TEST_RICHTEXTSTRING);
|
RichTextString richTextString = new HSSFRichTextString(TEST_RICHTEXTSTRING);
|
||||||
|
|
|
@ -23,7 +23,7 @@ import org.apache.poi.ss.usermodel.Cell;
|
||||||
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;
|
||||||
import org.apache.poi.xssf.usermodel.extensions.XSSFComments;
|
import org.apache.poi.xssf.model.CommentsTable;
|
||||||
import org.apache.poi.xssf.usermodel.helpers.ColumnHelper;
|
import org.apache.poi.xssf.usermodel.helpers.ColumnHelper;
|
||||||
import org.openxmlformats.schemas.spreadsheetml.x2006.main.CTCol;
|
import org.openxmlformats.schemas.spreadsheetml.x2006.main.CTCol;
|
||||||
import org.openxmlformats.schemas.spreadsheetml.x2006.main.CTComment;
|
import org.openxmlformats.schemas.spreadsheetml.x2006.main.CTComment;
|
||||||
|
@ -490,7 +490,7 @@ public class TestXSSFSheet extends TestCase {
|
||||||
CTSheet ctSheet = CTSheet.Factory.newInstance();
|
CTSheet ctSheet = CTSheet.Factory.newInstance();
|
||||||
CTWorksheet ctWorksheet = CTWorksheet.Factory.newInstance();
|
CTWorksheet ctWorksheet = CTWorksheet.Factory.newInstance();
|
||||||
CTComments ctComments = CTComments.Factory.newInstance();
|
CTComments ctComments = CTComments.Factory.newInstance();
|
||||||
XSSFComments sheetComments = new XSSFComments(ctComments);
|
CommentsTable sheetComments = new CommentsTable(ctComments);
|
||||||
XSSFSheet sheet = new XSSFSheet(ctSheet, ctWorksheet, workbook, sheetComments);
|
XSSFSheet sheet = new XSSFSheet(ctSheet, ctWorksheet, workbook, sheetComments);
|
||||||
assertNotNull(sheet);
|
assertNotNull(sheet);
|
||||||
|
|
||||||
|
@ -509,7 +509,7 @@ public class TestXSSFSheet extends TestCase {
|
||||||
XSSFSheet sheet = new XSSFSheet(ctSheet, ctWorksheet, workbook);
|
XSSFSheet sheet = new XSSFSheet(ctSheet, ctWorksheet, workbook);
|
||||||
Cell cell = sheet.createRow(0).createCell((short)0);
|
Cell cell = sheet.createRow(0).createCell((short)0);
|
||||||
CTComments ctComments = CTComments.Factory.newInstance();
|
CTComments ctComments = CTComments.Factory.newInstance();
|
||||||
XSSFComments comments = new XSSFComments(ctComments);
|
CommentsTable comments = new CommentsTable(ctComments);
|
||||||
XSSFComment comment = comments.addComment();
|
XSSFComment comment = comments.addComment();
|
||||||
|
|
||||||
sheet.setCellComment("A1", comment);
|
sheet.setCellComment("A1", comment);
|
||||||
|
|
Loading…
Reference in New Issue