Class XSSFVMLDrawing

java.lang.Object
org.apache.poi.ooxml.POIXMLDocumentPart
org.apache.poi.xssf.usermodel.XSSFVMLDrawing

public final class XSSFVMLDrawing extends POIXMLDocumentPart
Represents a SpreadsheetML VML drawing.

In Excel 2007 VML drawings are used to describe properties of cell comments, although the spec says that VML is deprecated:

The VML format is a legacy format originally introduced with Office 2000 and is included and fully defined in this Standard for backwards compatibility reasons. The DrawingML format is a newer and richer format created with the goal of eventually replacing any uses of VML in the Office Open XML formats. VML should be considered a deprecated format included in Office Open XML for legacy reasons only and new applications that need a file format for drawings are strongly encouraged to use preferentially DrawingML

Warning - Excel is known to put invalid XML into these files! For example, >br< without being closed or escaped crops up.

See 6.4 VML - SpreadsheetML Drawing in Office Open XML Part 4 - Markup Language Reference.pdf
Author:
Yegor Kozlov
  • Constructor Details

    • XSSFVMLDrawing

      protected XSSFVMLDrawing()
      Create a new SpreadsheetML drawing
      See Also:
    • XSSFVMLDrawing

      protected XSSFVMLDrawing(PackagePart part) throws IOException, org.apache.xmlbeans.XmlException
      Construct a SpreadsheetML drawing from a package part
      Parameters:
      part - the package part holding the drawing data, the content type must be application/vnd.openxmlformats-officedocument.drawing+xml
      Throws:
      IOException
      org.apache.xmlbeans.XmlException
      Since:
      POI 3.14-Beta1
  • Method Details

    • read

      protected void read(InputStream is) throws IOException, org.apache.xmlbeans.XmlException
      Throws:
      IOException
      org.apache.xmlbeans.XmlException
    • getItems

      protected List<org.apache.xmlbeans.XmlObject> getItems()
    • write

      protected void write(OutputStream out) throws IOException
      Throws:
      IOException
    • commit

      protected void commit() throws IOException
      Description copied from class: POIXMLDocumentPart
      Save the content in the underlying package part. Default implementation is empty meaning that the package part is left unmodified.

      Sub-classes should override and add logic to marshal the "model" into Ooxml4J.

      For example, the code saving a generic XML entry may look as follows:

       protected void commit() throws IOException {
         PackagePart part = getPackagePart();
         OutputStream out = part.getOutputStream();
         XmlObject bean = getXmlBean(); //the "model" which holds changes in memory
         bean.save(out, DEFAULT_XML_OPTIONS);
         out.close();
       }
       
      Overrides:
      commit in class POIXMLDocumentPart
      Throws:
      IOException - a subclass may throw an IOException if the changes can't be committed
    • newCommentShape

      protected com.microsoft.schemas.vml.CTShape newCommentShape()
    • findCommentShape

      public com.microsoft.schemas.vml.CTShape findCommentShape(int row, int col)
      Find a shape with ClientData of type "NOTE" and the specified row and column
      Returns:
      the comment shape or null
    • removeCommentShape

      protected boolean removeCommentShape(int row, int col)