2012-12-02 123 views
2

我需要打開一個xlsx文件,以便用戶可以看到它。
我用下面的代碼,但無法顯示Excel文件:打開Excel xlsx文件進行查看

public ActionResult GetExcelReport() 
{ 
    string fileName = "Sheet1.xlsx"; 
    string path = Path.Combine(@"C:\Test", fileName); 

    return File(path, "application/xlsx"); 
} 

我希望在retrun File(path ...
實際上會打開該文件進行查看。

+0

發生了什麼事?另外,你的MIME類型是錯誤的。 – SLaks

+0

什麼都沒有發生。沒有錯誤。我也嘗試與應用程序/ xls,但同樣的事情。沒有錯誤。沒有任何反應 –

回答

-1

嘗試使用Microsoft.Office.Interop.Excel,並且:

Application excel = new Application(); 
Workbook wb = excel.Workbooks.Open(path); 
excel.Visible=true; 

順便問一下,你也可以使用using System.Diagnostics;,並且

Process.Start(path); 

你只要通過使用File打開一個文件流,這不Launch一個文件。

+0

謝謝。任何想法爲什麼它使用Process.Start時立即打開和關閉.. –

+0

那麼,你可以使用'process.WaitForInputIdle();' – bhuang3

+0

同時,你也可以使用'process.WaitForExit();' – bhuang3

-1

要擴展bhuang3的答案:如果您希望您的用戶能夠看到Excel電子表格,然後讓您的應用程序使用它執行某些操作,那麼我會使用Interop答案,因爲您的應用程序可以保留參考以執行動作。

您可以

Excel.Application xlApp = new Excel.Application(); 
Excel.Workbooks xlWBs = xlApp.Workbooks; 
Excel.Workbook xlWB = xlWBs.Open(path); 
xlApp.Visible = true; 

打開它,你已經完成了它之後,你應該關閉該工作簿並退出應用程序,以防止Excel掛無頭在內存中(這可能會有一些很奇方當用戶去打開他們的計算機上的其他電子表格)

xlWB.Close(); 
xlWB = null; 
xlWBs = null; 
xlApp.Quit(); 
xlApp = null; 

或者,如果你只是想打開電子表格,然後給用戶充分控制我會用Process.Start(path)解決方案,因爲它的效果無效的COM問題很多。