MVC 匯出內容到Word檔案中

2022-03-07 11:50:00 字數 2755 閱讀 7046

在 controller 中我們可以使用 fileresult 向客戶端傳送檔案。

fileresult 是乙個抽象類,繼承自 actionresult。在 system.web.mvc.dll 中,它有如上三個子類,分別以不同的方式向客戶端傳送檔案。

在實際使用中我們通常不需要直接例項化乙個 fileresult 的子類,因為 controller 類已經提供了六個 file 方法來簡化我們的操作:

protected internal filepathresult file(string filename, string contenttype);

protected internal virtual filepathresult file(string filename, string contenttype, string filedownloadname);

protected internal filecontentresult file(byte filecontents, string contenttype);

protected internal virtual filecontentresult file(byte filecontents, string contenttype, string filedownloadname);

protected internal filestreamresult file(stream filestream, string contenttype);

protected internal virtual filestreamresult file(stream filestream, string contenttype, string filedownloadname);

filepathresult 直接將磁碟上的檔案傳送至瀏覽器:

1. 最簡單的方式

public actionresult filepathdownload1()

第乙個引數指定檔案路徑,第二個引數指定檔案的 mime 型別。

2. 指定 filedownloadname

filepathdownload2 沒問題,filepathdownload3 還是預設為了 action 的名字。原因是 filedownloadname 將作為 url 的一部分,只能包含 ascii 碼。我們把 filepathdownload3 改進一下:

3. 對 filedownloadname 進行 url 編碼

好了,沒問題了。上面**中 url.encode(…),也可使用 httputility.urlencode(…),前者在內部呼叫後者。

我們再來看 filecontentresult.

想給 filestreamresult 找乙個恰當的例子是不太容易的,畢竟 http response 中已經包含了乙個輸出流,如果要動態生成檔案的話,可以直接向這個輸出流中寫入資料,效率還高。當然,我們不會在 controller 中直接向 response 的 outputstream 寫入資料,這樣做是不符合mvc的,我們應該把這個操作封裝成乙個 actionresult。

不過仔細想想,用途還是有的,比如伺服器上有個壓縮(或加密)檔案,需要解壓(或解密)後傳送給使用者。

1. 解壓(或解密)

演示**如下,解壓使用 icsharpcode.sharpziplib.dll:

public actionresult filestreamdownload1()

簡單起見,假定壓縮檔案中只有乙個檔案,且是 pdf 格式的。鶴沖天.zip 如下:

2. **(或盜鏈)

public actionresult filestreamdownload1()

看下面提示視窗,**還是 localhost:

匯出替換Word模板中的內容

if filepath.tostring tolowercase endswith docx runtext oneparastring for map.entryentry hmocrgkeytovalue.entryset else 網上有很多先移除runs在新增,這種做法模板裡面的樣式會消失,...

匯出ADF Table內容到Excel

1 建立adf應用,基於hr schema中的departments表建立entity object,view object 3 建立頁面,從data control面板拖動該view object的例項到頁面中,以table形式進行資料展現,並進行布局,在table外新增一層panel colle...

附加內容到檔案

如果你要給檔案新增內容,而不是覆蓋原有的內容,可以附加模式開啟檔案。你以附加模式 開啟檔案時,python不會在返回檔案物件前清空檔案,而你寫入到檔案的行都將新增到檔案末尾。如果指定的檔案不存在,python將為你建立乙個空檔案。filename programming1.txt with open...