必須の DocIO
Microsoft Wordファイルの読み書きが可能な.NETライブラリ。このコンポーネントは、Microsoft Office COM クラス ライブラリと同様のオブジェクト モデルであり、COM 相互運用を使用せず、C# で記述されています。 Microsoft Word がシステムにインストールされていない場合は、このコンポーネントを検討してください。
新しい MS Word ドキュメントの作成: テキスト、画像、グラフ、ページ、フッターを含む MS Word ドキュメントの作成をサポートします。
ドキュメントの書式設定: ユニバーサル MS Word レポートへの書式設定をサポートします。
ドキュメント生成はテンプレートに基づいています: テンプレートに基づいてドキュメントを生成するには、MS Word GUI を使用してドキュメント レポートをデザインし、DocIO を使用してテンプレート ファイルにデータを動的に入力します。
ドキュメントのプロパティ: Word ドキュメントのプロパティ設定の読み取りと書き込みを行います。
変換: Essential PDF を使用した MS Word ドキュメントの PDF への変換をサポートします。
高度な機能: 複数の MS Word ドキュメントを 1 つのドキュメントにコピーおよび結合することをサポートします。
HTMLをWordに変換する
public static byte[] ConvertHtmlToDoc(string html)
{
var document = 新しい WordDocument();
IWSection セクション = document.AddSection();
IWParagraph パラ = セクション.AddParagraph();
文字列エラーメッセージ = "";
bool valid = Section.Body.IsValidXHTML(html, XHTMLValidationType.Strict, out errorMessage);
if (!有効)
throw new InvalidCastException(errorMessage + "<hr>" + html);
document.XHTMLValidateOption = XHTMLValidationType.Strict;
セクション.Body.InsertXHTML(html);
var outMem = 新しい MemoryStream();
document.Save(outMem, FormatType.Doc);
outMem.Seek(0, SeekOrigin.Begin);
var content = 新しいバイト[outMem.Length];
outMem.Read(content, 0, content.Length);
outMem.Dispose();
document.Close();
コンテンツを返す。
}
Word 生成時に指定したテキストを置換する
/// <概要>
/// Word 生成時に指定されたテキストを置換します
/// </概要>
/// <param name="templatePath"></param>
/// <param name="ファイル名"></param>
/// <param name="replaysDictionary"></param>
public static void ReplaceDocContent(string templateFileName, string newFileName,
Dictionary<string, string> は、Dictionary を再生します)
{
IWordDocument ドキュメント = new WordDocument();
document.Open(templateFileName, FormatType.Doc);
foreach (replaysDictionary の var rd)
{
if (string.IsNullOrEmpty(document.GetText())) 続行;
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);
}
パスワードで保護された文書
public static Stream SetDocProtect(byte[] docContent, string key)
{
var mem = 新しい MemoryStream(docContent);
mem.Seek(0, SeekOrigin.Begin);
IWordDocument ドキュメント = 新しい WordDocument(mem, FormatType.Automatic);
document.Protect(ProtectionType.AllowOnlyFormFields, key);
var outMem = 新しい MemoryStream();
document.Save(outMem, FormatType.Doc);
outMem.Seek(0, SeekOrigin.Begin);
outMem を返します。
}
ブックマークの場所にテーブルを作成する
public static IWTable ReplaceTable(WordDocument ドキュメント, string BookmarkName, DataTable データ, 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 : 1;
WTable テーブル = 新しい WTable(document, true);
table.ResetCells(data.Rows.Count + captionCount, data.Columns.Count);
for (varcolCount = 0;colCount < captionCount;colCount++)
{
for (varcol = 0;col<data.Columns.Count;col++)
{
var 段落 = table.Rows[colCount].Cells[col].AddParagraph();
var caption = data.Columns[col].ColumnName;
if (mutilTableCaption != null && mutilTableCaption.Count > 0)
キャプション = mutilTableCaption[colCount][col];
var text = 段落.AppendText(caption);
段落.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 (varcol = 0;col<data.Columns.Count;col++)
{
var 段落 = table.Rows[行].Cells[col].AddParagraph();
var text =paragraph.AppendText(data.Rows[row - captionCount][col] + "");
text.CharacterFormat.FontName = "宋体";
text.CharacterFormat.FontSize = 9f;
二重値 = 0;
if (double.TryParse(text.Text, out val))
{
text.Text = Math.Round(val, 2) + "";
//右揃え
段落.ParagraphFormat.horizontalAlignment = Syncfusion.DocIO.DLS.horizontalAlignment.Right;
table.Rows[行].Cells[col].CellFormat.VerticalAlignment =verticalAlignment.Middle;
table.Rows[行].Cells[col].CellFormat.TextWrap = false;
}
}
//セルを結合、下方向に結合
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 (行 > キャプション数)
{
var priorityCell = 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 = 新しい BookmarksNavigator(ドキュメント);
bk.MoveToBookmark(ブックマーク名);
TextBodyPart body= bk.GetBookmarkContent();
bk.DeleteBookmarkContent(true);
bk.InsertTable(テーブル);
テーブルを返します。
}
-