2010-07-05 65 views
2

我的要求,我需要允許用戶上傳Word文檔與佔位某些字段可以在數據庫中找到出口到Word文檔。這將是他們的模板。例如,佔位符可能會加上@@或其他東西。例如類似功能的MS Word郵件合併允許從ASP.Net Web應用程序

Dear @@Title @@Lastname 

然後他們可以抓取一條記錄並將其導出爲Word文檔。這會讓他們選擇模板。他們可以選擇模板,然後單擊繼續。然後,我將獲取模板並將@@Title替換爲所選記錄的數據庫中的標題字段。我不知道從哪裏開始或者需要做什麼組件。

從我的初步調查似乎我能做到這一點與Office 2007的新的開放XML標準所以也許我應該在模板讀取所有內容的地方保存到數據庫表。然後,當用戶想要導出時,我再次獲取內容,然後執行搜索並替換@@佔位符並將其正確鏈接。然後再次將文檔保存到輸出流中,然後在瀏覽器中顯示保存對話框。

我使用ASP.Net MVC和我在一個託管環境。我也可能正在考慮動態地創建一個新的View類型,並在用戶上傳模板時動態創建新的視圖。不確定這種方法將工作。

這是一個很好的方法嗎? 我應該看什麼工具? 還有其他建議嗎?

回答

3

這類似於我們採取了將數據插入到Word文檔,然後將其返回到用戶的方法。我們打開了.docx文件(這是一個很容易提取的zip文件),提取文檔(在名爲document.xml的文件夾中),進行替換,然後將文檔放回.docx文件並將其返回給用戶。

我們打的一個問題是這個詞在陌生的地方插入標記,特別是之類的東西拼寫/語法錯誤,所以我們需要的時候,我們做了查找/替換要小心。

我們決定不存儲在數據庫中,從文件中的字段,以允許容易更新的文件。

我們使用dotnetzip組件用於打開的.docx文件

的東西,我們也沒對好幾種文件合併成一個大的文件,以節省下載的數量。如果我記得我們使用open xml toolkit來合併。該網站還有大量可能有用的其他信息。

+0

這是一個很好的答案(我願意投票,但我今天沒有投票)。安迪,你插入問題的原因是文本範圍(''可以像拼寫錯誤,粗體等任何東西被打破。解決方法是爲佔位符使用內容控件 - 他們不打破這個 – 2010-07-05 20:03:33

+0

@Otaku感謝您的關注,請關注內容控制。 – 2010-07-05 21:03:55

+0

投票重置。+1。 – 2010-07-06 00:45:11

1

退房Scott Guthries blog post有關名爲「Razor」的新視圖引擎代碼即將從微軟發佈。在評論中有關於它可以用於郵件合併場景的討論,就像你在談論ASP.NET MVC視圖一樣。