public List <PersonFiles> SaveSplitDocument(Stream document) { List <PersonFiles> resultList = new List <PersonFiles>(); byte[] byteArray = StreamTools.ReadFully(document); using (MemoryStream documentInMemoryStream = new MemoryStream(byteArray, 0, byteArray.Length, true, true)) { foreach (OpenXMLDocumentPart <Sheet> element in DocumentElements) { OpenXmlPowerToolsDocument docDividedPowerTools = new OpenXmlPowerToolsDocument(DocumentName, documentInMemoryStream); using (OpenXmlMemoryStreamDocument streamDoc = new OpenXmlMemoryStreamDocument(docDividedPowerTools)) { SpreadsheetDocument excelDoc = streamDoc.GetSpreadsheetDocument(); excelDoc.WorkbookPart.Workbook.Sheets.RemoveAllChildren(); Sheets sheets = excelDoc.WorkbookPart.Workbook.Sheets; foreach (Sheet compo in element.CompositeElements) { sheets.Append(compo.CloneNode(false)); } excelDoc.WorkbookPart.Workbook.Save(); var person = new PersonFiles(); person.Person = element.PartOwner; resultList.Add(person); person.Name = element.Guid.ToString(); person.Data = streamDoc.GetModifiedDocument().DocumentByteArray; } } OpenXmlPowerToolsDocument docPowerTools = new OpenXmlPowerToolsDocument(DocumentName, documentInMemoryStream); using (OpenXmlMemoryStreamDocument streamDoc = new OpenXmlMemoryStreamDocument(docPowerTools)) { SpreadsheetDocument excelDoc = streamDoc.GetSpreadsheetDocument(); excelDoc.WorkbookPart.Workbook.Sheets.RemoveAllChildren(); excelDoc.WorkbookPart.Workbook.Save(); var person = new PersonFiles(); person.Person = "/"; resultList.Add(person); person.Name = "template.xlsx"; person.Data = streamDoc.GetModifiedDocument().DocumentByteArray; } } var xmlPerson = new PersonFiles(); xmlPerson.Person = "/"; resultList.Add(xmlPerson); xmlPerson.Name = "mergeXmlDefinition.xml"; xmlPerson.Data = CreateMergeXml(); return(resultList); }
private void button_Click_4(object sender, RoutedEventArgs e) { MemoryStream inMemoryCopy = new MemoryStream(); using (FileStream fs = File.OpenRead(@"C:\Users\drabiu\Documents\Testy\przykladowa-prezentacja.pptx")) { fs.CopyTo(inMemoryCopy); } MemoryStream inMemoryCopy2 = new MemoryStream(); using (FileStream fs = File.OpenRead(@"C:\Users\drabiu\Documents\Testy\6.CGW15-prezentacja.pptx")) { fs.CopyTo(inMemoryCopy2); } byte[] byteArray = StreamTools.ReadFully(inMemoryCopy); byte[] byteArray2 = StreamTools.ReadFully(inMemoryCopy2); using (MemoryStream mem = new MemoryStream()) { mem.Write(byteArray, 0, (int)byteArray.Length); using (PresentationDocument preDoc = PresentationDocument.Open(mem, true)) { using (MemoryStream mem2 = new MemoryStream()) { mem2.Write(byteArray2, 0, (int)byteArray2.Length); using (PresentationDocument pre2Doc = PresentationDocument.Open(mem2, true)) { PresentationTools.InsertSlidesFromTemplate(preDoc, pre2Doc, new List <string>() { "rId13" }); } } } byteArray = mem.ToArray(); //System.IO.File.WriteAllBytes(@"C:\Users\drabiu\Documents\Testy\przykladowa-prezentacja-test.pptx", mem.ToArray()); } System.IO.File.WriteAllBytes(@"C:\Users\drabiu\Documents\Testy\przykladowa-prezentacja-test.pptx", byteArray); //System.IO.File.WriteAllBytes(@"C:\Users\drabiu\Documents\Testy\przykladowa-prezentacja-test.pptx", inMemoryCopy.ToArray()); //using (FileStream file = new FileStream(@"C:\Users\drabiu\Documents\Testy\przykladowa-prezentacja.pptx", FileMode.Create, FileAccess.Write)) //{ // inMemoryCopy.WriteTo(file); //} inMemoryCopy.Close(); }
public List <PersonFiles> SaveSplitDocument(Stream document) { List <PersonFiles> resultList = new List <PersonFiles>(); byte[] byteArray = StreamTools.ReadFully(document); using (MemoryStream documentInMemoryStream = new MemoryStream(byteArray, 0, byteArray.Length, true, true)) { OpenXmlPowerToolsDocument docPowerTools = new OpenXmlPowerToolsDocument(DocumentName, documentInMemoryStream); using (OpenXmlMemoryStreamDocument streamTemplateDoc = new OpenXmlMemoryStreamDocument(docPowerTools)) { PresentationDocument templatePresentation = streamTemplateDoc.GetPresentationDocument(); foreach (OpenXMLDocumentPart <SlideId> element in DocumentElements) { OpenXmlPowerToolsDocument emptyDocPowerTools = new OpenXmlPowerToolsDocument(DocumentName, documentInMemoryStream); using (OpenXmlMemoryStreamDocument streamDividedDoc = new OpenXmlMemoryStreamDocument(emptyDocPowerTools)) { var relationshipIds = element.CompositeElements.Select(c => c.RelationshipId.Value).ToList(); PresentationDocument dividedPresentation = streamDividedDoc.GetPresentationDocument(); PresentationTools.InsertSlidesFromTemplate(PresentationTools.RemoveAllSlides(dividedPresentation), templatePresentation, relationshipIds); var person = new PersonFiles(); person.Person = element.PartOwner; resultList.Add(person); person.Name = element.Guid.ToString(); person.Data = streamDividedDoc.GetModifiedDocument().DocumentByteArray; } } } using (OpenXmlMemoryStreamDocument streamDoc = new OpenXmlMemoryStreamDocument(docPowerTools)) { PresentationDocument preDoc = streamDoc.GetPresentationDocument(); PresentationTools.RemoveAllSlides(preDoc); var person = new PersonFiles(); person.Person = "/"; resultList.Add(person); person.Name = "template.pptx"; person.Data = streamDoc.GetModifiedDocument().DocumentByteArray; } var xmlPerson = new PersonFiles(); xmlPerson.Person = "/"; resultList.Add(xmlPerson); xmlPerson.Name = "mergeXmlDefinition.xml"; xmlPerson.Data = CreateMergeXml(); } return(resultList); }
public void OpenAndSearchDocument(Stream docxFile, Stream xmlFile) { XmlSerializer serializer = new XmlSerializer(typeof(Split)); Split splitXml = (Split)serializer.Deserialize(xmlFile); byte[] byteArray = StreamTools.ReadFully(docxFile); using (MemoryStream mem = new MemoryStream()) { mem.Write(byteArray, 0, byteArray.Length); using (WordprocessingDocument wordDoc = WordprocessingDocument.Open(mem, true)) { Body body = wordDoc.MainDocumentPart.Document.Body; IMarkerMapper <OpenXmlElement> mapping = new MarkerWordMapper(DocumentName, splitXml, body); DocumentElements = mapping.Run(); } } }
public List <PartsSelectionTreeElement> Get(Stream file, Predicate <OpenXmlElement> supportedType) { List <PartsSelectionTreeElement> documentElements = new List <PartsSelectionTreeElement>(); byte[] byteArray = StreamTools.ReadFully(file); using (MemoryStream mem = new MemoryStream()) { mem.Write(byteArray, 0, byteArray.Length); using (WordprocessingDocument wordDoc = WordprocessingDocument.Open(mem, true)) { Body body = wordDoc.MainDocumentPart.Document.Body; foreach (var element in body.ChildElements) { documentElements.AddRange(CreatePartsSelectionTreeElements(element, _index, supportedType, 0)); _index++; } } } return(documentElements); }
public List <PersonFiles> SaveSplitDocument(Stream document) { List <PersonFiles> resultList = new List <PersonFiles>(); byte[] byteArray = StreamTools.ReadFully(document); using (MemoryStream documentInMemoryStream = new MemoryStream(byteArray, 0, byteArray.Length, true, true)) { foreach (OpenXMLDocumentPart <OpenXmlElement> element in DocumentElements) { OpenXmlPowerToolsDocument docDividedPowerTools = new OpenXmlPowerToolsDocument(DocumentName, documentInMemoryStream); using (OpenXmlMemoryStreamDocument streamDoc = new OpenXmlMemoryStreamDocument(docDividedPowerTools)) { WordprocessingDocument wordDoc = streamDoc.GetWordprocessingDocument(); wordDoc.MainDocumentPart.Document.Body.RemoveAllChildren(); Body body = wordDoc.MainDocumentPart.Document.Body; foreach (OpenXmlElement compo in element.CompositeElements) { body.Append(compo.CloneNode(true)); } wordDoc.MainDocumentPart.Document.Save(); var person = new PersonFiles(); person.Person = element.PartOwner; resultList.Add(person); person.Name = element.Guid.ToString(); person.Data = streamDoc.GetModifiedDocument().DocumentByteArray; } } // At this point, the memory stream contains the modified document. // We could write it back to a SharePoint document library or serve // it from a web server. OpenXmlPowerToolsDocument docPowerTools = new OpenXmlPowerToolsDocument(DocumentName, documentInMemoryStream); using (OpenXmlMemoryStreamDocument streamDoc = new OpenXmlMemoryStreamDocument(docPowerTools)) { WordprocessingDocument wordDoc = streamDoc.GetWordprocessingDocument(); wordDoc.MainDocumentPart.Document.Body.RemoveAllChildren(); wordDoc.MainDocumentPart.Document.Save(); var person = new PersonFiles(); person.Person = "/"; resultList.Add(person); person.Name = "template.docx"; person.Data = streamDoc.GetModifiedDocument().DocumentByteArray; } } // At this point, the memory stream contains the modified document. // We could write it back to a SharePoint document library or serve // it from a web server. var xmlPerson = new PersonFiles(); xmlPerson.Person = "/"; resultList.Add(xmlPerson); xmlPerson.Name = "mergeXmlDefinition.xml"; xmlPerson.Data = CreateMergeXml(); return(resultList); }