/// <summary> /// Erzeugt ein Dokument aus einem Template /// </summary> /// <param name="templateFile">Pfad zum Template</param> /// <param name="fileFormat">Dateiformat in dem das Dokument generiert wird</param> /// <returns>MemoryStream mit ausgefüllten Dokument</returns> public MemoryStream CreateDocument(string templateFile, DataFetcher data) { // Daten intialisieren byte[] byteArray = File.ReadAllBytes(templateFile); MemoryStream docStream = new MemoryStream(); docStream.Write(byteArray, 0, (int)byteArray.Length); // OpenXML intialisieren using (WordprocessingDocument wordDoc = WordprocessingDocument.Open(docStream, true)) { // Felder abfragen List <PlaceholderField> fields = ExtractFields(wordDoc); //Platzhalter ersetzen foreach (PlaceholderField curField in fields) { curField.InsertPlaceholder(GetPlaceholderValue(curField.Key, data)); // Elemente löschen foreach (OpenXmlElement curElem in curField.Elements) { curElem.RemoveAllChildren(); if (curElem.Parent != null) { curElem.Remove(); } } } } docStream.Seek(0, SeekOrigin.Begin); return(docStream); }
//private string[] GetPlaceholderValue(string key, DataFetcher data, string unusedOverloadingMethod) //{ // foreach (string item in data.MainText) // { // //Paragraph para = // } // return data.MainText; //} /// <summary> /// Gibt den Wert für einen Platzhalter zurück /// </summary> /// <param name="key">Schlüssel</param> /// <returns>Wert des Platzhalters</returns> private string GetPlaceholderValue(string key, DataFetcher data) { // Console.WriteLine("MaintText: "+data.MainText); // TODO: Platzhalter Werte bestimmen, z.B: über Webservice oder eine Liste an Interface von Placeholder Resolvern welche an die Manager Klasse eingefügt werden etc. if (key == "date") { return(data.Date); } else if (key == "company") { return(data.Company); } else if (key == "contactperson") { return(data.ContactPerson); } else if (key == "street") { return(data.Street); } else if (key == "housenumber") { return(data.HouseNumber); } else if (key == "postcode") { return(data.Postcode); } else if (key == "cityrecipient") { return(data.CityRecipient); } else if (key == "subject") { return(data.Subject); } else if (key == "salutation") { return(data.Salutation); } else if (key == "maintext") { // Console.WriteLine("MainText: " + data.MainText); //string[] test = data.MainText.Split('\n'); //int counter = 1; //foreach (string item in test) //{ // Console.WriteLine("Zeile " + counter + ": " + item); // counter++; //} return("*MAINTEXT*"); } else if (key == "signature") { return(data.Signature); } return(string.Empty); }
public void CheckForErrors(DataFetcher data) { if (data.Date == String.Empty) { AddError("Es wurde kein Datum angegeben."); } if (data.Company == String.Empty) { AddError("Beim Empfänger fehlt die Firma."); } if (data.ContactPerson == string.Empty) { AddError("Beim Empfänger fehlt der Ansprechpartner."); } if (data.Street == string.Empty) { AddError("Beim Empfänger fehlt die Straße!"); } if (data.HouseNumber == string.Empty) { AddError("Beim Empfänger fehlt die Hausnummer!"); } if (data.Postcode == string.Empty) { AddError("Beim Empfänger fehlt die PLZ!"); } if (data.CityRecipient == string.Empty) { AddError("Beim Empfänger fehlt der Ort!"); } if (data.CitySender == string.Empty) { AddError("Beim Absender fehlt die Stadt!"); } if (data.Subject == string.Empty) { AddError("Es fehlt eine Betreffzeile!"); } if (data.Salutation == string.Empty) { AddError("Die Anrede ist leer!"); } //if (data.MainText == string.Empty) //{ // AddError("Der Hauptteil ist leer!"); //} if (data.Signature == string.Empty) { AddError("Es fehlt eine Grußformel!"); } ShowList(); }
private void Btn_generateDocument_Click(object sender, EventArgs e) { string[] MainText = Rtb_mainText.Text.Split('\n'); ErrorList errorList = new ErrorList(); DataFetcher data = new DataFetcher { Date = dateTimePicker1.Value.ToShortDateString(), Company = tbx_company.Text, ContactPerson = tbx_contactPerson.Text, Street = tbx_street.Text, HouseNumber = tbx_houseNumber.Text, Postcode = tbx_postcode.Text, CityRecipient = tbx_cityRecipient.Text, Subject = Tbx_subject.Text, CitySender = Tbx_citySender.Text, Salutation = Lbl_salutation.Text + Cbox_salutation.Text + " " + tbx_contactPerson.Text + ",", // MainText = Rtb_mainText.Text, MainText = MainText, Signature = Cbx_signature.Text }; // Console.WriteLine(data.MainText); errorList.CheckForErrors(data); if (errorList.ErrorCount == 0) { CreateDocument(tabControl1.SelectedIndex, data); using (WordprocessingDocument wordDoc = WordprocessingDocument.Open("output_Allgemein.docx", true)) { string docText = null; using (StreamReader sr = new StreamReader(wordDoc.MainDocumentPart.GetStream())) { docText = sr.ReadToEnd(); } Regex regexText = new Regex("\\*MAINTEXT\\*"); docText = regexText.Replace(docText, ""); using (StreamWriter sw = new StreamWriter(wordDoc.MainDocumentPart.GetStream(FileMode.Create))) { sw.Write(docText); } } } }
private void CreateDocument(int documentType, DataFetcher data) { string templateFile = "Allgemein_Alpha.docx"; string outputFile = "output_Allgemein.docx"; switch (documentType) { case 1: templateFile = "Rechnung_Alpha.docx"; outputFile = "output_Rechnung.docx"; break; case 2: templateFile = "Angebot_Alpha.docx"; outputFile = "output_Angebot.docx"; break; case 3: templateFile = "Gehaltsabrechnung_Alpha.docx"; outputFile = "output_Gehaltsabrechnung.docx"; break; default: break; } // Manager aufbauen und Template "test.docx" befüllen DocumentServiceManager2 manager = new DocumentServiceManager2(); using (Stream stream = manager.CreateDocument(templateFile, data)) { // Stream in Ausgabe Datei speichern using (FileStream fileStream = new FileStream("output_" + tabControl1.SelectedTab.Text + ".docx", FileMode.Create)) { stream.CopyTo(fileStream); fileStream.Close(); } } }