/// <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);
        }
示例#2
0
        //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);
        }
示例#3
0
 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();
                }
            }
        }