Betrifft:
Lesen von Excel-Zellen mit C# auf Cell.Value, Cell.Value2 und FormulaLocal
Problem:
beim Lesen von Excel-Zellen steht Value2 nicht zur Verfügung und FormulaLocal erzeugt einen Fehler
Fehler Code und Meldung
1) Cell.Value
Beim Lesen einer Excel-Zelle in C# durch .Value oder .Value2 wird ein Fehler erzeugt
Lesen mit Excel.Cell.Value (->Fehler)
var cell = ws.Cells[iRow + 1, iColumn] as Excel.Range; String sValue = cell.Value; |
Komplette Fehlermeldung:
{System.Reflection.TargetInvocationException: Ein Aufrufziel hat einen Ausnahmefehler verursacht. ---> System.Runtime.InteropServices.COMException: Altes Format oder ungültige Typbibliothek. (Ausnahme von HRESULT: 0x80028018 (TYPE_E_INVDATAREAD)) |
2) Cell.Value2
Lesen mit Excel.Cell.Value2 (->Fehler)
var cell = ws.Cells[iRow + 1, iColumn] as Excel.Range; String sValue = cell.Value2; |
Oder bei Verwenden von .value2
error CS1061: 'object' does not contain a definition for 'Value2' and no extension method 'Value2' accepting a first argument of type 'object' could be found (are you missing a using directive or an assembly reference?) |
Lösung:
Man muss mit C# den Wert aus einer Excel Zelle mit Cell.Value2.ToString() auslesen.
Leider wird hier Intellisense nicht unterstützt.
Microsoft.Office.Interop.Excel.Range cell = usedRange.Cells[iRow, iColumn] as Range; String sValue = cell.Value2.ToString(); |
Zur Laufzeit wird auch der Fehlerwert angezeigt:
Fehlermeldung:
Der double-Typ kann nicht implizit in string konvertiert werden.
Auswertung einer Excel Cell worksheet.Cells[1,1]
Zur Laufzeit, Programmatically Value
Name |
Value |
Type |
|
◢ |
ws.Cells[1,1] |
{System.__ComObject} |
object {System.__ComObject} |
Debug Watch1
Debug Variablen zur Laufzeit
Name |
Value |
|
◢ |
Dynamic View |
Expanding the Dynamic View will get the dynamic members for the object |
▶ DisplayFormat |
{System.__ComObject} |
|
▶ FormatConditions |
{System.__ComObject} |
|
Formula |
{System.Reflection.TargetInvocationException: Ein Aufrufziel hat einen Ausnahmefehler verursacht. ---> System.Runtime.InteropServices.COMException: Altes Format oder ungültige Typbibliothek. (Ausnahme von HRESULT: 0x80028018 (TYPE_E_INVDATAREAD)) --- Ende der internen Ausnahmestapelüberwachung --- bei System.RuntimeType.InvokeDispMethod(String name, BindingFlags invokeAttr, Object target, Object[] args, Boolean[] byrefModifiers, Int32 culture, String[] namedParameters) bei System.RuntimeType.InvokeMember(String name, BindingFlags bindingFlags, Binder binder, Object target, Object[] providedArgs, ParameterModifier[] modifiers, CultureInfo culture, String[] namedParams) bei System.Dynamic.IDispatchComObject.GetMembers(IEnumerable`1 names)} |
|
FormulaArray |
{System.Reflection.TargetInvocationException: Ein Aufrufziel hat einen Ausnahmefehler verursacht. ---> System.Runtime.InteropServices.COMException: Altes Format oder ungültige Typbibliothek. (Ausnahme von HRESULT: 0x80028018 (TYPE_E_INVDATAREAD)) --- Ende der internen Ausnahmestapelüberwachung --- bei System.RuntimeType.InvokeDispMethod(String name, BindingFlags invokeAttr, Object target, Object[] args, Boolean[] byrefModifiers, Int32 culture, String[] namedParameters) bei System.RuntimeType.InvokeMember(String name, BindingFlags bindingFlags, Binder binder, Object target, Object[] providedArgs, ParameterModifier[] modifiers, CultureInfo culture, String[] namedParams) bei System.Dynamic.IDispatchComObject.GetMembers(IEnumerable`1 names)} |
|
FormulaHidden |
{System.Reflection.TargetInvocationException: Ein Aufrufziel hat einen Ausnahmefehler verursacht. ---> System.Runtime.InteropServices.COMException: Altes Format oder ungültige Typbibliothek. (Ausnahme von HRESULT: 0x80028018 (TYPE_E_INVDATAREAD)) --- Ende der internen Ausnahmestapelüberwachung --- bei System.RuntimeType.InvokeDispMethod(String name, BindingFlags invokeAttr, Object target, Object[] args, Boolean[] byrefModifiers, Int32 culture, String[] namedParameters) bei System.RuntimeType.InvokeMember(String name, BindingFlags bindingFlags, Binder binder, Object target, Object[] providedArgs, ParameterModifier[] modifiers, CultureInfo culture, String[] namedParams) bei System.Dynamic.IDispatchComObject.GetMembers(IEnumerable`1 names)} |
|
FormulaLabel |
{System.Reflection.TargetInvocationException: Ein Aufrufziel hat einen Ausnahmefehler verursacht. ---> System.Runtime.InteropServices.COMException: Ausnahme von HRESULT: 0x800A03EC --- Ende der internen Ausnahmestapelüberwachung --- bei System.RuntimeType.InvokeDispMethod(String name, BindingFlags invokeAttr, Object target, Object[] args, Boolean[] byrefModifiers, Int32 culture, String[] namedParameters) bei System.RuntimeType.InvokeMember(String name, BindingFlags bindingFlags, Binder binder, Object target, Object[] providedArgs, ParameterModifier[] modifiers, CultureInfo culture, String[] namedParams) bei System.Dynamic.IDispatchComObject.GetMembers(IEnumerable`1 names)} |
|
FormulaLocal |
"SA-Nr." |
|
FormulaR1C1 |
{System.Reflection.TargetInvocationException: Ein Aufrufziel hat einen Ausnahmefehler verursacht. ---> System.Runtime.InteropServices.COMException: Altes Format oder ungültige Typbibliothek. (Ausnahme von HRESULT: 0x80028018 (TYPE_E_INVDATAREAD)) --- Ende der internen Ausnahmestapelüberwachung --- bei System.RuntimeType.InvokeDispMethod(String name, BindingFlags invokeAttr, Object target, Object[] args, Boolean[] byrefModifiers, Int32 culture, String[] namedParameters) bei System.RuntimeType.InvokeMember(String name, BindingFlags bindingFlags, Binder binder, Object target, Object[] providedArgs, ParameterModifier[] modifiers, CultureInfo culture, String[] namedParams) bei System.Dynamic.IDispatchComObject.GetMembers(IEnumerable`1 names)} |
|
FormulaR1C1Local |
"SA-Nr." |
|
NumberFormat |
{System.Reflection.TargetInvocationException: Ein Aufrufziel hat einen Ausnahmefehler verursacht. ---> System.Runtime.InteropServices.COMException: Altes Format oder ungültige Typbibliothek. (Ausnahme von HRESULT: 0x80028018 (TYPE_E_INVDATAREAD)) --- Ende der internen Ausnahmestapelüberwachung --- bei System.RuntimeType.InvokeDispMethod(String name, BindingFlags invokeAttr, Object target, Object[] args, Boolean[] byrefModifiers, Int32 culture, String[] namedParameters) bei System.RuntimeType.InvokeMember(String name, BindingFlags bindingFlags, Binder binder, Object target, Object[] providedArgs, ParameterModifier[] modifiers, CultureInfo culture, String[] namedParams) bei System.Dynamic.IDispatchComObject.GetMembers(IEnumerable`1 names)} |
|
NumberFormatLocal |
{System.Reflection.TargetInvocationException: Ein Aufrufziel hat einen Ausnahmefehler verursacht. ---> System.Runtime.InteropServices.COMException: Altes Format oder ungültige Typbibliothek. (Ausnahme von HRESULT: 0x80028018 (TYPE_E_INVDATAREAD)) --- Ende der internen Ausnahmestapelüberwachung --- bei System.RuntimeType.InvokeDispMethod(String name, BindingFlags invokeAttr, Object target, Object[] args, Boolean[] byrefModifiers, Int32 culture, String[] namedParameters) bei System.RuntimeType.InvokeMember(String name, BindingFlags bindingFlags, Binder binder, Object target, Object[] providedArgs, ParameterModifier[] modifiers, CultureInfo culture, String[] namedParams) bei System.Dynamic.IDispatchComObject.GetMembers(IEnumerable`1 names)} |
|
PivotCell |
{System.Reflection.TargetInvocationException: Ein Aufrufziel hat einen Ausnahmefehler verursacht. ---> System.Runtime.InteropServices.COMException: Ausnahme von HRESULT: 0x800A03EC --- Ende der internen Ausnahmestapelüberwachung --- bei System.RuntimeType.InvokeDispMethod(String name, BindingFlags invokeAttr, Object target, Object[] args, Boolean[] byrefModifiers, Int32 culture, String[] namedParameters) bei System.RuntimeType.InvokeMember(String name, BindingFlags bindingFlags, Binder binder, Object target, Object[] providedArgs, ParameterModifier[] modifiers, CultureInfo culture, String[] namedParams) bei System.Dynamic.IDispatchComObject.GetMembers(IEnumerable`1 names)} |
|
Text |
{System.Reflection.TargetInvocationException: Ein Aufrufziel hat einen Ausnahmefehler verursacht. ---> System.Runtime.InteropServices.COMException: Altes Format oder ungültige Typbibliothek. (Ausnahme von HRESULT: 0x80028018 (TYPE_E_INVDATAREAD)) --- Ende der internen Ausnahmestapelüberwachung --- bei System.RuntimeType.InvokeDispMethod(String name, BindingFlags invokeAttr, Object target, Object[] args, Boolean[] byrefModifiers, Int32 culture, String[] namedParameters) bei System.RuntimeType.InvokeMember(String name, BindingFlags bindingFlags, Binder binder, Object target, Object[] providedArgs, ParameterModifier[] modifiers, CultureInfo culture, String[] namedParams) bei System.Dynamic.IDispatchComObject.GetMembers(IEnumerable`1 names)} |
|
Value2 |
{System.Reflection.TargetInvocationException: Ein Aufrufziel hat einen Ausnahmefehler verursacht. ---> System.Runtime.InteropServices.COMException: Altes Format oder ungültige Typbibliothek. (Ausnahme von HRESULT: 0x80028018 (TYPE_E_INVDATAREAD)) --- Ende der internen Ausnahmestapelüberwachung --- bei System.RuntimeType.InvokeDispMethod(String name, BindingFlags invokeAttr, Object target, Object[] args, Boolean[] byrefModifiers, Int32 culture, String[] namedParameters) bei System.RuntimeType.InvokeMember(String name, BindingFlags bindingFlags, Binder binder, Object target, Object[] providedArgs, ParameterModifier[] modifiers, CultureInfo culture, String[] namedParams) bei System.Dynamic.IDispatchComObject.GetMembers(IEnumerable`1 names)} |