Unverzichtbares DocIO
.NET-Bibliothek, die Microsoft Word-Dateien lesen und schreiben kann. Diese Komponente ist ein Objektmodell, ähnlich der Microsoft Office COM-Klassenbibliothek. Sie verwendet kein COM-Interop und ist in C# geschrieben. Wenn Microsoft Word nicht auf dem System installiert ist, können Sie diese Komponente in Betracht ziehen.
Neue MS Word-Dokumente erstellen: Unterstützt die Erstellung von MS Word-Dokumenten mit Text, Bildern, Diagrammen, Seiten und Fußzeilen.
Dokumentformatierung: Unterstützt die Formatierung in universelle MS Word-Berichte.
Die Dokumentenerstellung basiert auf Vorlagen: Um Dokumente auf der Grundlage von Vorlagen zu generieren, können Sie die MS Word-GUI verwenden, um Dokumentberichte zu entwerfen, und dann DocIO verwenden, um Daten dynamisch in die Vorlagendateien einzutragen.
Dokumenteigenschaften: Lesen und schreiben Sie die Eigenschafteneinstellungen von Word-Dokumenten.
Konvertierung: Unterstützt die Konvertierung von MS Word-Dokumenten in PDF mit Essential PDF.
Erweiterte Funktionen: Unterstützt das Kopieren und Zusammenführen mehrerer MS Word-Dokumente in einem einzigen Dokument.
Konvertieren Sie HTML in Word
öffentliches statisches Byte[] ConvertHtmlToDoc(string html)
{
var document = new WordDocument();
IWSection section = document.AddSection();
IWParagraph para = section.AddParagraph();
string errorMessage = "";
bool valid = section.Body.IsValidXHTML(html, XHTMLValidationType.Strict, out errorMessage);
if (!valid)
throw new InvalidCastException(errorMessage + "<hr>" + html);
document.XHTMLValidateOption = XHTMLValidationType.Strict;
section.Body.InsertXHTML(html);
var outMem = new MemoryStream();
document.Save(outMem, FormatType.Doc);
outMem.Seek(0, SeekOrigin.Begin);
var content = new byte[outMem.Length];
outMem.Read(content, 0, content.Length);
outMem.Dispose();
document.Close();
Inhalt zurückgeben;
}
Ersetzen Sie den angegebenen Text beim Generieren von Word
/// <Zusammenfassung>
/// Ersetzen Sie den angegebenen Text beim Generieren von Word
/// </summary>
/// <param name="templatePath"></param>
/// <param name="FileName"></param>
/// <param name="replaysDictionary"></param>
public static void ReplacementDocContent(string templateFileName, string newFileName,
Dictionary<string, string> replaysDictionary)
{
IWordDocument document = new WordDocument();
document.Open(templateFileName, FormatType.Doc);
foreach (var rd in replaysDictionary)
{
if (string.IsNullOrEmpty(document.GetText())) continue;
document.Replace(rd.Key, rd.Value, false, false);
while (document.GetText().IndexOf(rd.Key) != -1)
document.Replace(rd.Key, rd.Value, false, false);
}
document.Save(newFileName, FormatType.Doc);
}
Dokumente mit Passwort schützen
öffentlicher statischer Stream SetDocProtect(byte[] docContent, string key)
{
var mem = new MemoryStream(docContent);
mem.Seek(0, SeekOrigin.Begin);
IWordDocument document = new WordDocument(mem, FormatType.Automatic);
document.Protect(ProtectionType.AllowOnlyFormFields, key);
var outMem = new MemoryStream();
document.Save(outMem, FormatType.Doc);
outMem.Seek(0, SeekOrigin.Begin);
return outMem;
}
Erstellen Sie eine Tabelle am Lesezeichenspeicherort
public static IWTable ReplacementTable(WordDocument document, string bookmarkName, DataTable data, string mergeColName, List<List<string>> mutilTableCaption)
{
if (document == null) throw new ArgumentNullException("document");
if (bookmarkName == null) throw new ArgumentNullException("bookmarkName");
if (data == null) throw new ArgumentNullException("data");
if (data.Columns.Count < 1) throw new ArgumentNullException("data");
int captionCount = mutilTableCaption != null && mutilTableCaption.Count > 0 ? mutilTableCaption.Count : 1;
WTable table = new WTable(document, true);
table.ResetCells(data.Rows.Count + captionCount, data.Columns.Count);
for (var colCount = 0; colCount < captionCount; colCount++)
{
for (var col = 0; col < data.Columns.Count; col++)
{
var absatz = table.Rows[colCount].Cells[col].AddParagraph();
var caption = data.Columns[col].ColumnName;
if (mutilTableCaption != null && mutilTableCaption.Count > 0)
caption = mutilTableCaption[colCount][col];
var text = Absatz.AppendText(caption);
Absatz.ParagraphFormat.HorizontalAlignment = Syncfusion.DocIO.DLS.HorizontalAlignment.Center;
text.CharacterFormat.FontName = "宋体";
text.CharacterFormat.Bold = false;
text.CharacterFormat.FontSize = 10.5f;
}
}
for (var row = captionCount; row <= data.Rows.Count; row++)
for (var col = 0; col < data.Columns.Count; col++)
{
var absatz = table.Rows[row].Cells[col].AddParagraph();
var text = Absatz.AppendText(data.Rows[row - captionCount][col] + "");
text.CharacterFormat.FontName = "宋体";
text.CharacterFormat.FontSize = 9f;
Doppelwert = 0;
if (double.TryParse(text.Text, out val))
{
text.Text = Math.Round(val, 2) + "";
//rechts ausrichten
Absatz.ParagraphFormat.HorizontalAlignment = Syncfusion.DocIO.DLS.HorizontalAlignment.Right;
table.Rows[row].Cells[col].CellFormat.VerticalAlignment = VerticalAlignment.Middle;
table.Rows[row].Cells[col].CellFormat.TextWrap = false;
}
}
//Zellen zusammenführen, nach unten zusammenführen
if (!string.IsNullOrEmpty(mergeColName))
for (var row = captionCount; row < table.Rows.Count; row++)
{
var cell = table.Rows[row].Cells[data.Columns[mergeColName].Ordinal];
cell.CellFormat.VerticalMerge = CellMerge.Start;
var text = data.Rows[row - captionCount][mergeColName] + "";
if (row > captionCount)
{
var priorCell = table.Rows[row - captionCount].Cells[data.Columns[mergeColName].Ordinal];
var findText = data.Rows[row - captionCount - 1][mergeColName] + "";
if (text.Equals(findText))
cell.CellFormat.VerticalMerge = CellMerge.Continue;
}
}
BookmarksNavigator bk = new BookmarksNavigator(document);
bk.MoveToBookmark(bookmarkName);
TextBodyPart body= bk.GetBookmarkContent();
bk.DeleteBookmarkContent(true);
bk.InsertTable(table);
Rückgabetabelle;
}
-