2011-01-10 81 views
2

我有一個用C#編寫的.net網絡應用程序,只能在Intranet上使用。從.net應用程序創建Word文檔

我有一個頁面,我需要創建一個Word文檔,動態修改一些文本,保存Word文檔並將其作爲電子郵件附件發送。

我試着用Word自動化來做這件事,儘管它在我的開發機器上工作,但當其他用戶試圖使用它時,它不能在服務器上工作。

所以...如何創建一個Word文檔,保存並將其用作電子郵件附件?我搜索了並且有人說'使用open xml'...但是(除了我不知道該怎麼做的事實之外),這是否允許我創建並保存一個Word文檔,這個Word文檔可以被用戶打開Word的舊版本(比較早的是Word 97)。

我一直在閱讀'Sharepoint Server'這個詞,但是,我們不知道這可能適合.net web應用程序。

任何人都可以指出我正確的方向嗎?

+0

你知道爲什麼它不在服務器上運行? – 2011-01-10 11:44:45

+0

你想要生成什麼樣的文件格式? .DOC,.DOCX,.RTF,... – 2011-01-10 11:46:43

回答

3

OpenXML是現在正確的方法。從頭開始創建Word文檔實際上相當簡單,並且有很多教程。

僅僅因爲您使用Sharepoint標記了您的問題,我不確定您是否使用Sharepoint - 如果有的話,甚至還有一些關於Generating Documents from SharePoint Using Open XML Content Controls的示例代碼直接來自Microsoft。

+1

要復卷機:自動化不無盡的權限問題的服務器,因爲(我猜)上工作。微軟說「不服務器上嘗試辦公自動化,因爲辦公室沒有被設計爲」 ...... http://support.microsoft.com/?id=257757 – 2011-01-10 13:32:52

+0

要氧雜:我需要生成一個Word文檔將與Word兼容返回到Word 97-2003 – 2011-01-10 13:34:15

+0

到月球:我是否必須走下XML的路線?我認爲Sharepoint允許人們在服務器上共享辦公文檔。所以我希望能夠打開一個Word文檔,修改其中的一些文本(書籤),然後將其保存在我想要的地方。 – 2011-01-10 13:36:46

1

代碼在您的開發計算機上工作但不在服務器上的最可能的原因是您的開發計算機可能安裝了Office/Word主互操作程序集,但您不會說這些計算機是安裝在服務器上還是不。我假設他們不是。

如果您的用戶上的Microsoft Office XP(2002)或Office 2003 Microsoft Office Compatibility Pack安裝,那麼你最好的選擇是使用Open XML SDK來實時生成一個.docx文件,您的用戶會可以通過安裝兼容包來打開。用戶打開文檔後,可以將其保存爲正常的.doc格式。

如果您的用戶羣包含Office 2000或更早版本的用戶,那麼您運氣不佳,因爲這些版本的Office沒有兼容包。

如果沒有安裝Office程序集,您將無法在Web服務器上生成.doc格式,正如其他人指出的那樣,Microsoft強烈建議您不要這樣做。

0

其他人已經評論了爲什麼自動化這個詞可能無法正常工作,爲什麼它不是一個不行。

OpenXML很好,但只支持較新的文件格式。

如果你想支持舊的.doc文件格式(Word97的等等),那麼你將不得不看另一個組件,可能從市場上如(無連接)Aspose Words

0

不要從服務中使用Office Automation。辦公自動化設計用於自動化Office 桌面應用程序。它假定存在一個用戶界面。

它也假設單線程。服務器(尤其是任何類型的Web服務器)將在多個線程上運行,而Office自動化代碼根本無法處理。

此外,對於使用調用Office Automation的代碼的每個最終用戶,您必須擁有有效的Office許可證。

1

你有沒有考慮過使用RTF? RTF文件只是文本,所以你可以使用普通的.Net文件I/O來讀取文件,改變你感興趣的位,然後再寫出來。 RTF可以從97以後的Word版本中讀取(也可能是舊版本)。一個缺點是如果您需要對文檔進行任何複雜的等變化,如果您只是將文本作爲RTF處理,可能會很困難。