Coding With Office Word
2023-02-04
筆記使用 Microsoft.Office.Interop
以 C# 來開發設計 Word 文件應用。
說明
首先需要加入參考,在專案中選擇加入參考後選擇「COM」,如果要編輯的是 Word 文件則加入 Microsoft Word 16.0 Object Library,如果是 Excel 則加入 Microsoft Excel 16.0 Object Library。
負責執行 C# 的作業系統必需要安裝 Office 才能夠正常運作,本次的示範安裝的是 Microsoft 365 Apps 版本 2301。
Coding
static void Main(string[] args)
{
string path = @"C:\temp\Hello.doc";
Application wordApp = new Application
{
Visible = false // 讓 Word 在背景執行
};
var wordDoc = wordApp.Documents.Open(path);
// 讀取 Word 所有文字段落
foreach (Paragraph p in wordDoc.Paragraphs)
{
Console.WriteLine(p.Range.Text);
}
// 尋找符合的內容並進行取代
wordDoc.Content.Find.Execute(
FindText: "Hello World", ReplaceWith: "C# Love Office");
// 迭代所有段落,尋找符合的關鍵字後取代內容與調整段落文字顏色
foreach (Paragraph paragraph in wordDoc.Paragraphs)
{
if (paragraph.Range.Text.Contains("JavaScript"))
{
var range = paragraph.Range;
range.Find.Execute(FindText: "JavaScript", ReplaceWith: "JS", Replace: WdReplace.wdReplaceAll);
range.Font.Color = WdColor.wdColorRed;
}
}
// 迭代所有的表格內容
var table = wordDoc.Tables[1];
for (int row = 1; row <= table.Rows.Count; row++)
{
for (int col = 1; col <= table.Columns.Count; col++)
{
Console.WriteLine(table.Cell(row, col).Range.Text);
}
}
// 新增表格資料列
table.Rows.Add();
var newRow = table.Rows[table.Rows.Count];
newRow.Cells[1].Range.Text = "傑尼龜";
newRow.Cells[2].Range.Text = "8";
newRow.Cells[3].Range.Text = "太陽眼鏡";
// 另存新檔以及變更副檔名的方式
var savePath = Path.ChangeExtension(path, ".docx");
wordApp.ActiveDocument.SaveAs2(savePath, WdSaveFormat.wdFormatXMLDocument);
wordApp.ActiveDocument.Close();
wordApp.Quit();
}