C# クラスから F# クラス ライブラリに渡された Excel ワークシートのデータを処理しようとしています。C# プロジェクトは Excel アドイン プロジェクトであり、F# クラスはこれです。
namespace DataLib
open System
open System.Reflection
open System.Collections.Generic
open FSharpx.TypeProviders.Excel
open Microsoft.FSharp.Core.CompilerServices
open System.IO
open System.Linq
open System.Text
open System.Windows.Forms
open Microsoft.Office.Core
open Microsoft.Office.Interop.Excel
open Microsoft.Office.Tools.Excel
type sheet = Microsoft.Office.Interop.Excel.Worksheet
type Class1() =
member this.X = "F#"
member this.Readsheet (sh:obj)=
let sht = sh:?>Worksheet// exception here
let v=sh.Cells.[1,1] // Exception COM object does not have Cells property etc...
sh.Range.Item(1,1).ToString() //error here ca
したがって、このように C# からクラスを呼び出すと
using DataLib;
public void useExcel(sh as Excel.Worksheet) //Excel.Worksheet is Excel Interop object
{
Class1 one = new Class1()
one.Readsheet(sh) //Exception thrown here in F# class
}