2017-02-21 8 views
1

Excelのファイルからデータを読み込もうとしていますが、なんらかの理由で何か問題が起こります。これは私がやっているものです:Excelファイルからデータを読み取るにはどうすればよいですか?

Excel.Application xlApp ; 
Excel.Workbook xlWorkBook ; 
Excel.Worksheet xlWorkSheet ; 
Excel.Range range ; 

string str; 
int rCnt ; 
int cCnt ; 
int rw = 0; 
int cl = 0; 

xlApp = new Excel.Application(); 
xlWorkBook = xlApp.Workbooks.Open(@"C:\Users\pc\Desktop\Alessio.xls", 0, true, 5, "", "", true, Microsoft.Office.Interop.Excel.XlPlatform.xlWindows, "\t", false, false, 0, true, 1, 0); 
xlWorkSheet = (Excel.Worksheet)xlWorkBook.Worksheets.get_Item(1); 

range = xlWorkSheet.UsedRange; 
rw = range.Rows.Count; 
cl = range.Columns.Count; 


for (rCnt = 1; rCnt <= rw; rCnt++) 
{ 
    for (cCnt = 1; cCnt <= cl; cCnt++) 
    { 
     str = (string)(range.Cells[rCnt, cCnt] as Excel.Range).Value2; 
     MessageBox.Show(str); 
    } 
} 

をそして、これは私が手例外です:

"System.Runtime.InteropServices.COMException' in WindowsFormsApplication2.exe" 
Adding information:HRESULT: 0x80010105 (RPC_E_SERVERFAULT) 

なぜ、どのように私はこの問題を解決することができ、あなたが知っていますか?

+1

ランタイムエラーはどこですか? F10でデバッグして、場所を確認してください。その間に、以下を試してみてください: 'str = range.Cells [rCnt、cCnt] .Value2;' – Vityata

+1

次のコード行を実行しようとすると例外が発生します: "xlWorkBook = xlApp.Workbooks.Open(@" C: Microsoft Office.Interop.Excel.XlPlatform.xlWindows、 "\ t"、false、false、0、true、0、true、5、 ""、 " 1、0); " – Ale

答えて

1

これはコーディング上の問題ではありません。プロジェクトのMicrosoft.Office.Interop.Excel/Office参照を削除して、関連するバージョン番号のドキュメントを再ロードしてください。

+0

あなたはどういう意味ですか? – Ale

+0

これをチェックしてくださいhttps://msdn.microsoft.com/en-us/library/dd264733.aspx – sofsntp

0

すべてをDataGridViewに配置できます。

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()); 
      } 
     } 
    } 
} 
関連する問題