Hallo,
ich bekomme immer eine ComException Fehlermeldung, habe schon danach gegooglt finde aber keine Lösung dazu.
Verwende Office 2007.
Methode, zum Auslesen der Excel Datei:
Soll die Spalte x und x+1 aulesen und in das 2 Dimensionale Array speichern
C#-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27:
| public double[,] LesenArraySpalte(string dateiname, int spalte) { double[,] werte = new double[8000,2]; this.myExcelApplication = new Excel.Application(); this.myExcelWorkbook = (Excel.Workbook)myExcelApplication.Workbooks.Open(Environment.CurrentDirectory + "\\Excel\\" + dateiname); this.myExcelWorkSheet = (Excel.Worksheet)myExcelWorkbook.ActiveSheet; try { range = myExcelWorkSheet.UsedRange; for (int i = 0; i <= range.Rows.Count; i++) { werte[i, 0] = (double)(range.Cells[i+4, spalte] as Excel.Range).Value2; werte[i, 1] = (double)(range.Cells[i+4, spalte+1] as Excel.Range).Value2; } } catch (Exception ex) { MessageBox.Show("Exception: " + ex); } this.myExcelApplication.Quit(); closeExcel();
return werte; } |
Fehlermeldung:
C#-Quelltext
1:
| Message "Ausnahme von HRESULT: 0x800A03EC" |
Edit:
Hätte Solution 1 probiert, bin mir aber nicht sicher wo ich die Methoden aufrufen muss, siehe oben:
www.made4dotnet.com/...tabid=141&aid=15
Edit2:
Habe folgende Zeile geändert:
statt werte[i+4] --> werte[i] und range.Cells[i, spalte] --> range.Cells[i+4, spalte]
C#-Quelltext
1: 2:
| werte[i, 0] = (double)(range.Cells[i+4, spalte] as Excel.Range).Value2; werte[i, 1] = (double)(range.Cells[i+4, spalte+1] as Excel.Range).Value2; |
C#-Quelltext
1:
| Die Funktionsauswertung wurde deaktiviert, weil bei einer vorhergehenden Funktionsauswertung das Timeout überschritten wurde. Sie müssen die Ausführung fortsetzen, um die Funktionsauswertung wieder zu aktivieren.} System.Exception {Microsoft.CSharp.RuntimeBinder.RuntimeBinderException |
MfG