expose VMLDrawing in SXSSF code

git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1895189 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
PJ Fanning 2021-11-20 01:31:51 +00:00
parent b2a7a1729f
commit e9355ddad4
2 changed files with 27 additions and 8 deletions

View File

@ -34,6 +34,7 @@ import org.apache.poi.ss.util.CellAddress;
import org.apache.poi.util.Internal;
import org.apache.poi.util.Removal;
import org.apache.poi.util.Units;
import org.apache.poi.xssf.streaming.SXSSFSheet;
import org.apache.poi.xssf.usermodel.XSSFClientAnchor;
import org.apache.poi.xssf.usermodel.XSSFComment;
import org.apache.poi.xssf.usermodel.XSSFSheet;
@ -220,7 +221,7 @@ public class CommentsTable extends POIXMLDocumentPart implements Comments {
return null;
}
XSSFVMLDrawing vml = sheet instanceof XSSFSheet ? ((XSSFSheet)sheet).getVMLDrawing(false) : null;
XSSFVMLDrawing vml = getVMLDrawing(sheet, false);
return new XSSFComment(this, ctComment,
vml == null ? null : vml.findCommentShape(cellAddress.getRow(), cellAddress.getColumn()));
}
@ -260,7 +261,7 @@ public class CommentsTable extends POIXMLDocumentPart implements Comments {
*/
@Override
public XSSFComment createNewComment(Sheet sheet, ClientAnchor clientAnchor) {
XSSFVMLDrawing vml = sheet instanceof XSSFSheet ? ((XSSFSheet)sheet).getVMLDrawing(true) : null;
XSSFVMLDrawing vml = getVMLDrawing(sheet, true);
CTShape vmlShape = vml == null ? null : vml.newCommentShape();
if (vmlShape != null && clientAnchor instanceof XSSFClientAnchor && ((XSSFClientAnchor)clientAnchor).isSet()) {
// convert offsets from emus to pixels since we get a
@ -365,4 +366,13 @@ public class CommentsTable extends POIXMLDocumentPart implements Comments {
comments.getAuthors().insertAuthor(index, author);
return index;
}
private XSSFVMLDrawing getVMLDrawing(Sheet sheet, boolean autocreate) {
if (sheet instanceof XSSFSheet) {
return ((XSSFSheet)sheet).getVMLDrawing(autocreate);
} else if (sheet instanceof SXSSFSheet) {
return ((SXSSFSheet)sheet).getVMLDrawing(autocreate);
}
return null;
}
}

View File

@ -47,12 +47,7 @@ import org.apache.poi.ss.util.PaneInformation;
import org.apache.poi.ss.util.SheetUtil;
import org.apache.poi.util.Internal;
import org.apache.poi.util.NotImplemented;
import org.apache.poi.xssf.usermodel.XSSFColor;
import org.apache.poi.xssf.usermodel.XSSFComment;
import org.apache.poi.xssf.usermodel.XSSFDataValidation;
import org.apache.poi.xssf.usermodel.XSSFDrawing;
import org.apache.poi.xssf.usermodel.XSSFHyperlink;
import org.apache.poi.xssf.usermodel.XSSFSheet;
import org.apache.poi.xssf.usermodel.*;
import org.openxmlformats.schemas.spreadsheetml.x2006.main.CTColor;
import org.openxmlformats.schemas.spreadsheetml.x2006.main.CTSheetFormatPr;
import org.openxmlformats.schemas.spreadsheetml.x2006.main.CTSheetPr;
@ -349,6 +344,20 @@ public class SXSSFSheet implements Sheet
}
/**
* Get VML drawing for this sheet (aka 'legacy' drawing). This method is for internal POI use only.
*
* @param autoCreate if true, then a new VML drawing part is created
*
* @return the VML drawing of {@code null} if the drawing was not found and autoCreate=false
* @since POI 5.2.0
*/
@Internal
public XSSFVMLDrawing getVMLDrawing(boolean autoCreate) {
XSSFSheet xssfSheet = getWorkbook().getXSSFSheet(this);
return xssfSheet == null ? null : xssfSheet.getVMLDrawing(autoCreate);
}
/**
* Returns the CellStyle that applies to the given
* (0 based) column, or null if no style has been