2

ユーザーが表示できるように、xlsx ファイルを開く必要があります。
次のコードを使用しましたが、Excel ファイルを表示できませんでした。

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

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

File(path ...
再実行により実際にファイルが表示用に開かれることを望んでいました。

4

2 に答える 2

-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

于 2012-12-02T01:38:59.373 に答える
-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 の問題の多くを回避できるため、このソリューションを使用します。

于 2012-12-02T02:12:55.710 に答える