Word Doc in CSharp mit Variablen erstellen o kopieren
Hallo,
Ich habe ein einseitiges Word Dokument als Vorlage. Dieses Enthält Tabellenspalten, welche als Variable übergeben werden sollen. Darunter Name und zwei Felder als Date-range z.B. 20.08.22 und 25.08.22
Mein Code
Variablen habe ich gefunden.
allerdings möchte ich die Vorlagenseite für val in range dem doc "anfügen" oder in einem neuen Sammeln
z.B. start 15.08.2022, end 02.09.2022
Seite 1 Name, val(15.08.22), val(19.08.22)
Seite 2 Name, val(22.08.22), val(26.08.22)
Seite 3 Name, val(29.08.22),val(02.09.22)
Hat hier evtl. jemand eine Idee?
Gruß
OpSec
Ich habe ein einseitiges Word Dokument als Vorlage. Dieses Enthält Tabellenspalten, welche als Variable übergeben werden sollen. Darunter Name und zwei Felder als Date-range z.B. 20.08.22 und 25.08.22
Mein Code
var start = Datetimepicker1.SelectedValue
var end = Datetimepicker2.SelectedValue
string Vorname = Textbox1.Text
string Nachname = Textbox2.Text
List<Object> Weeks = new List<Object> Weeks
var range = GetWeekdayRange(start,end);
foreach(var val in range)
{
Weeks.Add("{0:yyyy-MM-dd} - {1:yyyy-MM-dd}",val.WeekStartDate,val.WeekEndDate);
Application app = new Application();
Document doc = word.Documents.Add("C:\Users\user\doc.docx");
doc.Variables["WocheVon"].Value = {0:yyyy-MM-dd};
doc.Variables["WocheBis"].Value = {1:yyyy-MM-dd};
doc.Variables["VollerName"].Value = Nachname + "," + " " + Vorname;
doc.Fields.Update();
doc.Save();
doc.Close();
app.Quit();
}
Variablen habe ich gefunden.
allerdings möchte ich die Vorlagenseite für val in range dem doc "anfügen" oder in einem neuen Sammeln
z.B. start 15.08.2022, end 02.09.2022
Seite 1 Name, val(15.08.22), val(19.08.22)
Seite 2 Name, val(22.08.22), val(26.08.22)
Seite 3 Name, val(29.08.22),val(02.09.22)
Hat hier evtl. jemand eine Idee?
Gruß
OpSec
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 3677889126
Url: https://administrator.de/contentid/3677889126
Ausgedruckt am: 22.11.2024 um 04:11 Uhr
6 Kommentare
Neuester Kommentar
Mit nem Bookmark
https://docs.microsoft.com/de-de/office/vba/api/word.bookmarks
https://docs.microsoft.com/de-de/office/vba/api/word.bookmarks
Zitat von @opsec2022:
Hallo,
das ist VB, nicht?
Gruß
OpSec
Zitat von @3479126418:
Mit nem Bookmark
https://docs.microsoft.com/de-de/office/vba/api/word.bookmarks
Mit nem Bookmark
https://docs.microsoft.com/de-de/office/vba/api/word.bookmarks
Hallo,
das ist VB, nicht?
Gruß
OpSec
In c# hast du dann im Endeffekt mit den Interop-Assemblies die selben Eigenschaften zur Verfügung wenn du die Word Referenz dem Projekt hinzufügst. Kannst also die Doku auch für c# mitbenutzen.
Joa, und damit das Word Doc weiß wohin dein Inhalt soll erstellst du Bookmarks im Template und sprichst diese Bookmarks aus dem Code an, feddisch.
Tabellenzeilen kannst du natürlich auch hinzufügen, bsp. für die erste Tabelle im Dokument und drei Spalten mit Inhalt:
Microsoft.Office.Interop.Word.Application wordApp = new Microsoft.Office.Interop.Word.Application();
wordApp.Visible = true; // only for debugging purpose
Microsoft.Office.Interop.Word.Document doc = wordApp.Documents.Add(@"C:\template.dotx");
doc.Bookmarks["MyBookmark"].Range.Text = "Whatever you like";
Tabellenzeilen kannst du natürlich auch hinzufügen, bsp. für die erste Tabelle im Dokument und drei Spalten mit Inhalt:
Microsoft.Office.Interop.Word.Row newRow = doc.Tables[1].Rows.Add();
newRow.Cells[1].Range.Text = "Andi Mustermann";
newRow.Cells[2].Range.Text = "01.01.2022";
newRow.Cells[3].Range.Text = "05.01.2022";