私はテキスト形式を読み込もうとしています。たとえば、Strikethoughプロパティを介して
myworksheet.Cells[row, col].DisplayFormat.Style.Font.Strikethrough;
ただし、実際のフォーマットに関係なく、結果は常にfalseです。
その直前に、次を使用して同じセルの値を読み取りました。
myworksheet.Cells[row, col].Value;
そして、正しい値を取得します。
デバッガーを使用して読み取ろうとすると、myworksheet.Cells[row, col].DisplayFormat.Style.Font.Strikethrough
falseが表示されます。
デバッガーを使用してフォーマットを読み取り、Font
そのプロパティを確認しようとすると、次のようになります。
例外の詳細:
Strikethrough {System.Reflection.TargetInvocationException: Exception has been thrown by the target of an invocation. ---> System.Runtime.InteropServices.COMException: Old format or invalid type library. (Exception from HRESULT: 0x80028018 (TYPE_E_INVDATAREAD))
--- End of inner exception stack trace ---
at System.RuntimeType.InvokeDispMethod(String name, BindingFlags invokeAttr, Object target, Object[] args, Boolean[] byrefModifiers, Int32 culture, String[] namedParameters)
at System.RuntimeType.InvokeMember(String name, BindingFlags bindingFlags, Binder binder, Object target, Object[] providedArgs, ParameterModifier[] modifiers, CultureInfo culture, String[] namedParams)
at System.Dynamic.IDispatchComObject.GetMembers(IEnumerable`1 names)} System.Reflection.TargetInvocationException
Windows 7 SP1x64OSにOffice2010x86をインストールしていて、.NET4.0プロジェクトからMicrosoft.Office.Interop.Excelバージョン14を参照しています。
同じライブラリを使用してプログラムで.xlsxファイルを作成し、ExcelのUIを使用してテキストの書式を手動で追加しました。
デバッガー(監視および即時)を介したアクセスによってスローされた例外は、ライブラリのバージョンが古くなっている可能性があることを示唆していますが、バージョン14は正しいバージョンのようです(http://www.microsoft.com/en-us/download /details.aspx?id=3508)。
私は何が欠けていますか?