2013-04-08 8 views
11

Ich kann keine Daten in Excel lesen. Hier ist der Code ich verwende:Lesen von Daten aus Excel 2010 mit Microsoft.Office.Interop.Excel

using Excel = Microsoft.Office.Interop.Excel; 

Excel.Application xlApp = new Excel.Application(); 
Excel.Workbook xlWorkbook = xlApp.Workbooks.Open(@"Book1.xlsx", 0, true, 5, "", "", true, Excel.XlPlatform.xlWindows, "\t", false, false, 0, true, 1, 0); 
Excel._Worksheet xlWorksheet = (Excel._Worksheet)xlWorkbook.Sheets[1]; 
Excel.Range xlRange = xlWorksheet.UsedRange; 

int rowCount = xlRange.Rows.Count; 
int colCount = xlRange.Columns.Count; 

for (int i = 1; i <= rowCount; i++) 
{ 
    for (int j = 1; j <= colCount; j++) 
    { 
     MessageBox.Show(xlWorksheet.Cells[i,j].ToString()); 
    } 
} 

ich ein Meldungsfeld erhalten, die etwas über System.__ComObject anstelle eines Wertes sagt.
Wie kann ich das beheben?

Antwort

14

ich die Lösung für oben gefunden, hier ist der Code sollte lauten:

string temp = (string)(xlRange.Cells[i, j] as Excel.Range).Value2; 
MessageBox.Show(temp); 
5

haben es getestet, aber ich denke, es

MessageBox.Show(xlRange.Cells[i,j].ToString()); 

oder alternativ

MessageBox.Show(xlRange.Cells[i,j].Value.ToString()); 
+0

unter Fehler Werfen „‚Objekt‘enthält keine Definition für ' Value 'und keine Erweiterungsmethode' Value ', die ein erstes Argument vom Typ' object 'akzeptiert, könnte gefunden werden (fehlt eine using-Direktive oder eine Assembly-Referenz?) " – Coolenough

0

Versuchen Sie diesen Code:

MessageBox.Show(((Excel.Range)xlRange.Cells[i,j]).Value2.ToString()); 

Dieser Code funktioniert erfolgreich für mich.

2

Versuchen Sie folgendes:

MessageBox.Show(xlRange.Cells[i][j].Value); 
+1

danke mate. Es klappt. –

0

die folgende Funktion verwenden, um Daten als Datatable-Objekt für N-ten Blatt zu bekommen:

public DataTable GetWorkSheet(int workSheetID) 
    { 
     string pathOfExcelFile = fileFullName; 
     DataTable dt = new DataTable(); 

     try 
     { 
      excel.Application excelApp = new excel.Application(); 

      excelApp.DisplayAlerts = false; //Don't want Excel to display error messageboxes 

      excel.Workbook workbook = excelApp.Workbooks.Open(pathOfExcelFile, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing); //This opens the file 

      excel.Worksheet sheet = (excel.Worksheet)workbook.Sheets.get_Item(workSheetID); //Get the first sheet in the file 

      int lastRow = sheet.Cells.SpecialCells(excel.XlCellType.xlCellTypeLastCell, Type.Missing).Row; 
      int lastColumn = sheet.Cells.SpecialCells(excel.XlCellType.xlCellTypeLastCell, Type.Missing).Column; 

      excel.Range oRange = sheet.get_Range(sheet.Cells[1, 1], sheet.Cells[lastRow, lastColumn]);//("A1",lastColumnIndex + lastRow.ToString()); 

      oRange.EntireColumn.AutoFit(); 


      for (int i = 0; i < oRange.Columns.Count; i++) 
      { 
       dt.Columns.Add("a" + i.ToString()); 
      } 

      object[,] cellValues = (object[,])oRange.Value2; 
      object[] values = new object[lastColumn]; 

      for (int i = 1; i <= lastRow; i++) 
      { 

       for (int j = 0; j < dt.Columns.Count; j++) 
       { 
        values[j] = cellValues[i, j + 1]; 
       } 
       dt.Rows.Add(values); 
      } 

      workbook.Close(false, Type.Missing, Type.Missing); 
      excelApp.Quit(); 
     } 
     catch (Exception ex) 
     { 
      System.Windows.Forms.MessageBox.Show(ex.Message, "Error", System.Windows.Forms.MessageBoxButtons.OK, System.Windows.Forms.MessageBoxIcon.Error); 

     } 
     return dt; 

    } 
Verwandte Themen