標籤

more tags...

最新回覆

[C#]WinForm利用Microsoft.Office.Interop.Word來合併多個Word檔

最近同事問到這個問題,小弟一樣去找解答,分享一下測試心得

首先準備好兩個測試的word檔(1.doc,2.doc)放在c槽裡,執行完程式就產生3.doc的合併檔了

WinForm(C#)
WordCombine.cs


 

執行結果:
原始word檔→1.doc,2.doc

    


合併word檔→接下行合併(LineBreak)

 


合併word檔→接下頁合併(PageBreak)

參考網址:
http://bytes.com/forum/thread236890.html

 

推到 Twitter!
推到 Plurk!


 

2008/7/17 18:52| 閱讀數 : 3794 | 我要推薦 | 6 Comments | 文章分類 : C#(WinForm) 訂閱


回覆

# re: [C#]WinForm利用Microsoft.Office.Interop.Word來合併多個Word檔, Posted by 小賤健 on 2008/7/17 下午 08:26  回覆

咦,好像有點怪怪的哩?

23. string oFirstDoc = @"c:\1.doc";//word檔1
24. object oSecondDoc = @"c:\2.doc";//word檔2
25. object oOutputDoc = @"c:\3.doc";//合併檔

對照 24、25 行,23. 應該是 object 才對哦。如果沒搞錯的話XD

# re: [C#]WinForm利用Microsoft.Office.Interop.Word來合併多個Word檔, Posted by puma on 2008/7/17 下午 09:07  回覆

33.wordApp.Selection.InsertFile(oFirstDoc, ref missing, ref missing, ref missing, ref missing);

的oFirstDoc..是接string沒錯...

# re: [C#]WinForm利用Microsoft.Office.Interop.Word來合併多個Word檔, Posted by 小賤健 on 2008/7/17 下午 11:16  回覆

我把它改寫成 VB 的 ConsoleApplication 版本,然後順便驗證一下程式的運作。耶,成功了。

---

Imports Word = Microsoft.Office.Interop.Word
Imports System.Reflection

Module Module1

Sub Main()
Dim oFirstDoc As String = "d:\1.doc"
Dim oSecondDoc As Object = "d:\2.doc"
Dim oCombinedDoc As Object = "d:\Combined.doc"

'Dim oPageBreak As Object=Word.WdBreakType.wdLineBreak
Dim oPageBreak As Object = Word.WdBreakType.wdPageBreak

Dim wordApp As New Word.Application()
Dim origDoc As Word.Document = wordApp.Documents.Open(oSecondDoc)
origDoc.Activate()
wordApp.Selection.InsertFile(oFirstDoc)
wordApp.Selection.InsertBreak(oPageBreak)
wordApp.ActiveDocument.SaveAs(oCombinedDoc)
wordApp.ActiveDocument.Close()
wordApp.Quit()

MsgBox("合併好了。")

End Sub

End Module

# re: [C#]WinForm利用Microsoft.Office.Interop.Word來合併多個Word檔, Posted by 小賤健 on 2008/7/17 下午 11:24  回覆

啊,拍謝啦,我太多話了,今天XD

我實驗了一下,發生了個很有趣的現象
1.doc 430KB,2.doc 345KB
合併完成後,3.doc 竟然才 370KB。我原本以為是 430 + 345 = 775KB。哈,真不錯,這算是有壓縮效果嗎,ccc

# re: [C#]WinForm利用Microsoft.Office.Interop.Word來合併多個Word檔, Posted by POPO on 2009/5/5 下午 06:02  回覆

您好,請問如何從word 2007產生的 .docx檔案 由c# or vb.net轉換成word 2003的 .doc 檔案呢?

另外

目前我所使用的是 Microsoft.Office.Interop.Word 的 Document.SaveAs 另存為 doc 檔,可是每次都當在 Documents.Open這一行,就沒有動作了。
我想可能是他有出現一個視窗(選擇是否要為唯讀打開之類的...),可是我是用 NetWork Service去執行它的(asp.net)。沒有辦法讓它出現所以可能是這樣一直卡在那個畫面不動。不知大大是否有其他的解決方案呢?

開發環境是 asp.net c#,sql server 2005, vista home Premiun, office 2003,office 2007, 引用的是 word 12 object library

# re: [C#]WinForm利用Microsoft.Office.Interop.Word來合併多個Word檔, Posted by Drsin on 2010/1/19 下午 12:56  回覆

請問winfrom可以用來讀取(唯讀方式)word檔嗎?而不可以列印及另存,讀取的檔案根據檔名來開啟,也就是說如果有兩個wordA.B我如果做了一個winfrom.exe只需要改檔名成wordA.exe就可以將wordA.doc開啟要開啟wordB也只需要將檔名改成wordB.exe就可以開啟wordB.doc可以做到這樣子嗎?感謝

發表回覆

標題: *
姓名: *
Email: (將不會被顯示)
Url:
回覆: *
登入後使用進階評論
Please add 7 and 2 and type the answer here:
F6 Team logo


用BloggerAds 替自已加薪

每月文章

文章分類

推薦討論區

推薦部落格