/// <summary> /// Write out this workbook to an Outputstream. Constructs /// a new POI POIFSFileSystem, passes in the workbook binary representation and /// Writes it out. /// </summary> /// <param name="stream">the java OutputStream you wish to Write the XLS to</param> public override void Write(Stream stream) { byte[] bytes = GetBytes(); POIFSFileSystem fs = new POIFSFileSystem(); // For tracking what we've written out, used if we're // going to be preserving nodes List<string> excepts = new List<string>(1); MemoryStream newMemoryStream = new MemoryStream(bytes); // Write out the Workbook stream fs.CreateDocument(newMemoryStream, "Workbook"); // Write out our HPFS properties, if we have them WriteProperties(fs, excepts); if (preserveNodes) { // Don't Write out the old Workbook, we'll be doing our new one excepts.Add("Workbook"); // If the file had WORKBOOK instead of Workbook, we'll Write it // out correctly shortly, so don't include the old one excepts.Add("WORKBOOK"); // Copy over all the other nodes to our new poifs CopyNodes(this.filesystem, fs, excepts); } fs.WriteFileSystem(stream); fs.Dispose(); newMemoryStream.Dispose(); bytes = null; }