【问题标题】:Open Excel xlsx file for viewing打开 Excel xlsx 文件进行查看
【发布时间】:2012-12-02 12:38:55
【问题描述】:

我需要打开一个 xlsx 文件以便用户可以看到它。
我使用了以下代码,但无法显示 excel 文件:

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

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

我希望重播File(path ...
实际上会打开文件进行查看。

【问题讨论】:

  • 发生了什么?另外,您的 MIME 类型错误。
  • 什么也没发生。没有错误。我也尝试过使用 application/xls 但同样的事情。没有错误。什么都没有发生

标签: c# asp.net-mvc excel


【解决方案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 一个文件。

【讨论】:

  • 嗯,你可以用process.WaitForInputIdle();
  • 同时,您也可以使用process.WaitForExit();
【解决方案2】:

扩展 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 问题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-07-27
    • 1970-01-01
    • 2019-01-27
    • 2021-04-06
    • 1970-01-01
    相关资源
    最近更新 更多