2016-03-18 52 views
0

我正在尋找在我的MVC應用程序中將數據導出到Excel的各種方法。在MVC應用程序中將數據導出到Excel

  1. 許多庫需要將數據存儲在DataTable中。

  2. 我將我的數據傳遞到模型以從視圖進行訪問。看起來你不能將這個模型傳遞迴控制器。

  3. 如果JavaScript不是作爲html表格導出,而是作爲純粹的Excel文件導出,那麼JavaScript是一個選項。

目前,我打電話將再次運行查詢,建立一個字符串,並使用System.IO.File.WriteAllText將輸出文件的功能。我不喜歡這種方式,因爲我必須再次調用數據庫來運行查詢(我已經擁有View中模型中需要的所有數據),並且路徑是硬編碼的,我希望Save Dialog彈出向上。

有沒有更好的方法來做到這一點?

我想下面的兩種方法真的很喜歡一個:

  1. 找到一個「絕招」通過從視圖返回到控制器的數據,可能的TempData可以在視圖莫名其妙使用?
  2. 的JavaScript會產生一個純粹的Excel格式(.xlsx)文件

    List<type> record = GetRecords(); 
    
    StringBuilder sb = new StringBuilder(); 
    
    sb.AppendLine("Data 1, Data 2, Data 3, Data 4"); 
    
    foreach (var item in record) 
    { 
        sb.AppendFormat("{0},{1},{2},{3},{4}\n", item.1, item.2, item.3, item.4); 
    } 
    
    System.IO.File.WriteAllText("myfile.csv", sb.ToString()); 
    
+0

js-xlsx(https://github.com/SheetJS/js-xlsx)是可以生成純xlsx文件的JavaScript庫。這會幫助你嗎? – wwv

+0

我結束了以下。謝謝 – Unrecognized

回答

1

您可以使用圖書館像EPPlus。 Excel文件可以完全用XML創建。格式是OpenXML。與其合作本身並沒有太多樂趣,但是這個庫使它易於管理。您可以根據需要構建XML文件,然後在響應中進行流式處理,因此從用戶的角度來看,他們正在下載Excel文件。鏈接的頁面顯示瞭如何從數據源(在本例中爲DataTable)開始,創建電子表格並將其添加到HttpResponse。您可以使用公式創建工作表,甚至可以使用多個工作表創建工作簿。

+0

如果您想在Excel中編輯這些數據並繼續將其發送回服務器,那麼您需要在Excel中進行管理。這並不容易。您需要在電子表格中執行的代碼在編輯後發回服務器。您不希望服務器使用更多的Excel進行響應,因爲那樣您每次都需要下載一個全新的電子表格。您可以讓他們編輯電子表格並將整個文件發回並解析。但是我認爲只要在瀏覽器中做到這一點就會更容易。 –

相關問題