2016-10-10 2 views
0

이 코드는 Excel 파일을 여는 데 사용됩니다.Excel 파일 열기 usint Interop using C#

Excel.Application oXL = new Excel.Application(); 
Excel._Workbook oWB; 

String filename = "C:\\plantilla2.xlsx"; 

oWB = oXL.Workbooks.Open(filename, 0, true, 5, "", "", true, Excel.XlPlatform.xlWindows, "\t", false, false, 0, true, 1, 0); 

MessageBox.Show("FIN"); 

이 코드는 2 일 전에 정상적으로 작동했습니다. 나는 아무것도 바꾸지 않았고 이제 Excel 파일을 여는 라인에 오류가 발생합니다. 먼저 나는 메시지가

을 "Excel에서 정보를 복구하기 위해 노력하고있다"를 참조하십시오 그리고 그 후 나는 예외를 얻을 "원격 프로 시저 호출에서 오류. (Excepción 드 HRESULT : 0x800706BE)"

나도 몰라 무엇을 잘못되고있다. 이 웹에서 설명한대로 참조를 확인했습니다. http://csharp.net-informations.com/excel/csharp-open-excel.htm

+0

경로가 잘못되었습니다. 죄송합니다. 올바른 경로는 "C : \\ plantilla2.xlsx"입니다. 파일은 해당 경로에 있습니다. – Kezern

+0

통합 문서를 열기 전에'oXL.Visible' = true로 설정해보십시오. Excel에서 단서를 제공하는 오류 메시지가 표시 될 수 있습니다. 또는 Excel을 사용하여 대화식으로 Excel 파일을 열어보십시오. 또한 작업 관리자를 사용하여 이전에 응용 프로그램을 실행했을 때부터 숨겨진 Excel 인스턴스가 아직 실행 중인지 확인하십시오. – Joe

+0

모든 Excel의 추가 기능을 사용하지 않도록 설정하고 오류가 계속 발생하는지 확인할 수 있습니다. 그것은 나를 위해 그것을 해결했다. – ltiveron

답변

0

RPC 서비스가 작동하지 않는 것처럼 보입니다. "원격 프로 시저 호출 (RPC)"여기서 "제어판 \ 관리 도구 \ 서비스"가 "실행 중"상태인지 확인 하시겠습니까?

0

나는 무슨 일이 일어 났는지 모른다. 컴퓨터를 다시 시작했는데 이제 작동합니다.

0

도움이 될 것입니다.

using System; 
using System.Drawing; 
using System.Windows.Forms; 
using Excel = Microsoft.Office.Interop.Excel; 

namespace WindowsApplication1 
{ 
    public partial class Form1 : Form 
    { 
     public Form1() 
     { 
      InitializeComponent(); 
     } 

     private void button1_Click(object sender, EventArgs e) 
     { 
      try 
      { 
       System.Data.OleDb.OleDbConnection MyConnection ; 
       System.Data.DataSet DtSet ; 
       System.Data.OleDb.OleDbDataAdapter MyCommand ; 
       MyConnection = new System.Data.OleDb.OleDbConnection("provider=Microsoft.Jet.OLEDB.4.0;Data Source='c:\\csharp.net-informations.xls';Extended Properties=Excel 8.0;"); 
       MyCommand = new System.Data.OleDb.OleDbDataAdapter("select * from [Sheet1$]", MyConnection); 
       MyCommand.TableMappings.Add("Table", "TestTable"); 
       DtSet = new System.Data.DataSet(); 
       MyCommand.Fill(DtSet); 
       dataGridView1.DataSource = DtSet.Tables[0]; 
       MyConnection.Close(); 
      } 
      catch (Exception ex) 
      { 
       MessageBox.Show (ex.ToString()); 
      } 
     } 
    } 
} 

이 링크를 참조하십시오.

http://csharp.net-informations.com/excel/csharp-excel-oledb.htm