2012-12-02 3 views
2

사용자가 볼 수 있도록 xlsx 파일을 열어야합니다.
나는 다음과 같은 코드를 사용하지만, 엑셀 파일을 표시 할 수 없습니다 : 나는 retrun File(path ...
실제로보기 위해 파일을 열 것이라고 기대했다보기를 위해 Excel xlsx 파일 열기

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

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

합니다.

+0

무슨 일이 일어 났습니까? 또한 MIME 형식이 잘못되었습니다. – SLaks

+0

아무 일도 없었습니다. 오류 없음. 나는 또한 application/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를 사용할 때 바로 열고 닫는 이유는 무엇입니까? 시작하십시오. –

+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을 방지하기 위해 응용 프로그램을 종료 할 수 있습니다 사용자가 단순히 스프레드 시트를 열고 나는 그것을부터 Process.Start(path) 솔루션을 사용하는 것이 사용자에게 모든 권한을 통해 제공하려는 경우,

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

또는) 자신의 컴퓨터에서 다른 스프레드 시트를 열어가는 효과 잠재적으로 지저분한 COM 문제가 많이 발생합니다.