Subject:
Reading Excel cells with C # on Cell.Value, Cell.Value2 and FormulaLocal
Problem:
Reading Excel cells does not make Value2 available and FormulaLocal generates an error
Error code and message
1) Cell.Value
Reading an Excel cell in C # with .Value or .Value2 generates an error
Reading with Excel.Cell.Value (-> Error)
var cell = ws.Cells[iRow + 1, iColumn] as Excel.Range; String sValue = cell.Value; |
Complete error message:
{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
Reading with Excel.Cell.Value2 (-> Error)
var cell = ws.Cells[iRow + 1, iColumn] as Excel.Range; String sValue = cell.Value2; |
Or when using .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?) |
Solution:
You have to read out the value from an Excel cell with Cell.Value2.ToString () with C #.
Unfortunately, Intellisense is not supported here.
Microsoft.Office.Interop.Excel.Range cell = usedRange.Cells[iRow, iColumn] as Range; String sValue = cell.Value2.ToString(); |
At runtime, the error value is also displayed:
Error message:
The double type can not be implicitly converted to string.
Evaluation of an Excel Cell worksheet.Cells [1,1]
At runtime, Programmatically Value
? |
Name |
Value |
Type |
◢ |
ws.Cells[1,1] |
{System.__ComObject} |
object {System.__ComObject} |
Debug Watch1
Debug variables at runtime
? |
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)} |