Class 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 Detail

      • XSSFVMLDrawing

        protected XSSFVMLDrawing​(PackagePart part)
                          throws java.io.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:
        java.io.IOException
        org.apache.xmlbeans.XmlException
        Since:
        POI 3.14-Beta1
    • Method Detail

      • read

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

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

        protected void write​(java.io.OutputStream out)
                      throws java.io.IOException
        Throws:
        java.io.IOException
      • commit

        protected void commit()
                       throws java.io.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:
        java.io.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)