Index: tika-app/src/test/java/org/apache/tika/cli/TikaCLITest.java
===================================================================
--- tika-app/src/test/java/org/apache/tika/cli/TikaCLITest.java	(revision 1615521)
+++ tika-app/src/test/java/org/apache/tika/cli/TikaCLITest.java	(working copy)
@@ -236,7 +236,7 @@
             // Image of the ChemDraw molecule
             File expectedIMG = new File(tempFile, "file4.png");
             // OLE10Native
-            File expectedOLE10 = new File(tempFile, "MBD002B0FA6_file5");
+            File expectedOLE10 = new File(tempFile, "MBD002B0FA6");
             // Something that really isnt a text file... Not sure what it is???
             File expected262FE3 = new File(tempFile, "MBD00262FE3.txt");
             // Image of one of the embedded resources
Index: tika-parsers/pom.xml
===================================================================
--- tika-parsers/pom.xml	(revision 1615521)
+++ tika-parsers/pom.xml	(working copy)
@@ -35,7 +35,7 @@
   <url>http://tika.apache.org/</url>
 
   <properties>
-    <poi.version>3.10-FINAL</poi.version>
+    <poi.version>3.11-beta1</poi.version>
     <codec.version>1.5</codec.version> <!-- NOTE: sync with POI -->
     <mime4j.version>0.7.2</mime4j.version>
     <vorbis.version>0.6</vorbis.version>
Index: tika-parsers/src/main/java/org/apache/tika/parser/microsoft/OfficeParser.java
===================================================================
--- tika-parsers/src/main/java/org/apache/tika/parser/microsoft/OfficeParser.java	(revision 1615521)
+++ tika-parsers/src/main/java/org/apache/tika/parser/microsoft/OfficeParser.java	(working copy)
@@ -159,7 +159,7 @@
             } else if (container instanceof DirectoryNode) {
                 root = (DirectoryNode) container;
             } else if (tstream.hasFile()) {
-                root = new NPOIFSFileSystem(tstream.getFileChannel()).getRoot();
+                root = new NPOIFSFileSystem(tstream.getFile(), true).getRoot();
             } else {
                 root = new NPOIFSFileSystem(new CloseShieldInputStream(tstream)).getRoot();
             }
Index: tika-parsers/src/main/java/org/apache/tika/parser/microsoft/POIFSContainerDetector.java
===================================================================
--- tika-parsers/src/main/java/org/apache/tika/parser/microsoft/POIFSContainerDetector.java	(revision 1615521)
+++ tika-parsers/src/main/java/org/apache/tika/parser/microsoft/POIFSContainerDetector.java	(working copy)
@@ -18,9 +18,9 @@
 
 import static org.apache.tika.mime.MediaType.application;
 
+import java.io.File;
 import java.io.IOException;
 import java.io.InputStream;
-import java.nio.channels.FileChannel;
 import java.util.Collections;
 import java.util.HashSet;
 import java.util.Set;
@@ -375,10 +375,10 @@
             throws IOException {
         // Force the document stream to a (possibly temporary) file
         // so we don't modify the current position of the stream
-        FileChannel channel = stream.getFileChannel();
+        File file = stream.getFile();
 
         try {
-            NPOIFSFileSystem fs = new NPOIFSFileSystem(channel);
+            NPOIFSFileSystem fs = new NPOIFSFileSystem(file, true);
 
             // Optimize a possible later parsing process by keeping
             // a reference to the already opened POI file system
Index: tika-parsers/src/main/java/org/apache/tika/parser/microsoft/ooxml/XSSFExcelExtractorDecorator.java
===================================================================
--- tika-parsers/src/main/java/org/apache/tika/parser/microsoft/ooxml/XSSFExcelExtractorDecorator.java	(revision 1615521)
+++ tika-parsers/src/main/java/org/apache/tika/parser/microsoft/ooxml/XSSFExcelExtractorDecorator.java	(working copy)
@@ -121,7 +121,8 @@
            InputStream stream = iter.next();
            sheetParts.add(iter.getSheetPart());
            
-           SheetTextAsHTML sheetExtractor = new SheetTextAsHTML(xhtml, iter.getSheetComments());
+           SheetTextAsHTML sheetExtractor = new SheetTextAsHTML(xhtml);
+           CommentsTable comments = iter.getSheetComments();
 
            // Start, and output the sheet name
            xhtml.startElement("div");
@@ -131,7 +132,7 @@
            xhtml.startElement("table");
            xhtml.startElement("tbody");
            
-           processSheet(sheetExtractor, styles, strings, stream);
+           processSheet(sheetExtractor, comments, styles, strings, stream);
 
            xhtml.endElement("tbody");
            xhtml.endElement("table");
@@ -176,6 +177,7 @@
     
     public void processSheet(
           SheetContentsHandler sheetContentsExtractor,
+          CommentsTable comments,
           StylesTable styles,
           ReadOnlySharedStringsTable strings,
           InputStream sheetInputStream)
@@ -187,7 +189,7 @@
          XMLReader sheetParser = saxParser.getXMLReader();
          XSSFSheetInterestingPartsCapturer handler =  
             new XSSFSheetInterestingPartsCapturer(new XSSFSheetXMLHandler(
-               styles, strings, sheetContentsExtractor, formatter, false));
+               styles, comments, strings, sheetContentsExtractor, formatter, false));
          sheetParser.setContentHandler(handler);
          sheetParser.parse(sheetSource);
          sheetInputStream.close();
@@ -205,13 +207,11 @@
      */
     protected static class SheetTextAsHTML implements SheetContentsHandler {
        private XHTMLContentHandler xhtml;
-       private CommentsTable comments;
        private List<String> headers;
        private List<String> footers;
        
-       protected SheetTextAsHTML(XHTMLContentHandler xhtml, CommentsTable comments) {
+       protected SheetTextAsHTML(XHTMLContentHandler xhtml) {
           this.xhtml = xhtml;
-          this.comments = comments;
           headers = new ArrayList<String>();
           footers = new ArrayList<String>();
        }
@@ -222,29 +222,28 @@
           } catch(SAXException e) {}
        }
        
-       public void endRow() {
+       public void endRow(int rowNum) {
           try {
              xhtml.endElement("tr");
           } catch(SAXException e) {}
        }
 
-       public void cell(String cellRef, String formattedValue) {
+       public void cell(String cellRef, String formattedValue, XSSFComment comment) {
           try {
              xhtml.startElement("td");
 
              // Main cell contents
-             xhtml.characters(formattedValue);
+             if (formattedValue != null) {
+                 xhtml.characters(formattedValue);
+             }
 
              // Comments
-             if(comments != null) {
-                XSSFComment comment = comments.findCellComment(cellRef);
-                if(comment != null) {
-                   xhtml.startElement("br");
-                   xhtml.endElement("br");
-                   xhtml.characters(comment.getAuthor());
-                   xhtml.characters(": ");
-                   xhtml.characters(comment.getString().getString());
-                }
+             if(comment != null) {
+                xhtml.startElement("br");
+                xhtml.endElement("br");
+                xhtml.characters(comment.getAuthor());
+                xhtml.characters(": ");
+                xhtml.characters(comment.getString().getString());
              }
 
              xhtml.endElement("td");
Index: tika-parsers/src/main/java/org/apache/tika/parser/microsoft/ooxml/XWPFWordExtractorDecorator.java
===================================================================
--- tika-parsers/src/main/java/org/apache/tika/parser/microsoft/ooxml/XWPFWordExtractorDecorator.java	(revision 1615521)
+++ tika-parsers/src/main/java/org/apache/tika/parser/microsoft/ooxml/XWPFWordExtractorDecorator.java	(working copy)
@@ -19,6 +19,7 @@
 import java.io.IOException;
 import java.util.ArrayList;
 import java.util.List;
+
 import javax.xml.namespace.QName;
 
 import org.apache.poi.openxml4j.opc.PackagePart;
@@ -29,6 +30,7 @@
 import org.apache.poi.xwpf.usermodel.IBody;
 import org.apache.poi.xwpf.usermodel.IBodyElement;
 import org.apache.poi.xwpf.usermodel.IRunElement;
+import org.apache.poi.xwpf.usermodel.ISDTContent;
 import org.apache.poi.xwpf.usermodel.XWPFDocument;
 import org.apache.poi.xwpf.usermodel.XWPFHeaderFooter;
 import org.apache.poi.xwpf.usermodel.XWPFHyperlink;
@@ -38,23 +40,22 @@
 import org.apache.poi.xwpf.usermodel.XWPFPictureData;
 import org.apache.poi.xwpf.usermodel.XWPFRun;
 import org.apache.poi.xwpf.usermodel.XWPFSDT;
-import org.apache.poi.xwpf.usermodel.XWPFSDTContent;
 import org.apache.poi.xwpf.usermodel.XWPFStyle;
 import org.apache.poi.xwpf.usermodel.XWPFStyles;
 import org.apache.poi.xwpf.usermodel.XWPFTable;
 import org.apache.poi.xwpf.usermodel.XWPFTableCell;
 import org.apache.poi.xwpf.usermodel.XWPFTableRow;
 import org.apache.tika.parser.ParseContext;
+import org.apache.tika.parser.microsoft.WordExtractor;
 import org.apache.tika.parser.microsoft.WordExtractor.TagAndStyle;
-import org.apache.tika.parser.microsoft.WordExtractor;
 import org.apache.tika.sax.XHTMLContentHandler;
 import org.apache.xmlbeans.XmlCursor;
 import org.apache.xmlbeans.XmlException;
 import org.apache.xmlbeans.XmlObject;
 import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTBookmark;
 import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTObject;
+import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTP;
 import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTSectPr;
-import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTP;
 import org.xml.sax.SAXException;
 import org.xml.sax.helpers.AttributesImpl;
 
@@ -111,7 +112,7 @@
     
     private void extractSDT(XWPFSDT element, XHTMLContentHandler xhtml) throws SAXException, 
     XmlException, IOException {
-       XWPFSDTContent content = element.getContent();
+       ISDTContent content = element.getContent();
        String tag = "p";
        xhtml.startElement(tag);
        xhtml.characters(content.getText());
