我嘗試改變的Word文件的文檔模板自動化的過程。如何文檔鏈接到不同的結構化模板
如果模板類似的結構,即它們都使用heading1
,那麼當文檔被鏈接到新的模板,它的工作原理。
但是,模板結構完全不同,heading1
不再使用,現在是section1
。我如何使用代碼更改這些部分標題?沿線if(heading1) rename to section1;
我正在使用Interop.Word
來執行這些操作。
下面是我使用的代碼:
public string UpdateDocumentWithNewTemplate(string document, string theme, string template, Word.Application wordApp)
{
try
{
object missing = System.Reflection.Missing.Value;
Word.Document aDoc = null;
object notReadOnly = false;
object isVisible = false;
wordApp.Visible = false;
// create objects from variables for wordApp
object documentObject = document;
// open existing document
aDoc = wordApp.Documents.Open(ref documentObject, ref missing, ref notReadOnly, ref missing, ref missing,
ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref isVisible,
ref missing, ref missing, ref missing, ref missing);
aDoc.Activate();
// set template and theme to overwrite the existing styles
aDoc.CopyStylesFromTemplate(template);
aDoc.ApplyDocumentTheme(theme);
aDoc.UpdateStyles();
// save the file with the changes
aDoc.SaveAs(ref documentObject, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing,
ref missing, ref missing, ref missing, ref missing, ref missing, ref missing);
// close the document
aDoc.Close(ref missing, ref missing, ref missing);
if (aDoc != null)
System.Runtime.InteropServices.Marshal.ReleaseComObject(aDoc);
aDoc = null;
return documentObject.ToString();
}
catch (Exception exception)
{
return "Error: " + exception;
}
}
感謝您的詳細解釋。使用OpenXml和Interop是否是不好的做法?使用Interop時,我似乎無法刪除/應用標題。 – PurpleSmurph
你可以使用什麼工作:-)我的代碼(根據你的情況調整)不起作用嗎?在我發佈之前,它在我的測試中確實有效。文檔是否受到任何保護? –
我不知道有什麼問題,似乎沒有被保護,但我們確實使用共享驅動器和共享點,最後我創建了一個新文檔並將原始內容複製/格式粘貼到新的文檔中,然後應用模板。我測試了你的代碼,它的工作原理=),我將在稍後將它集成到新版本中。 – PurpleSmurph