我在文档存储库中有一个用户可编辑的 Excel 文件,它为 F# 程序定义了一些输入。我想用 F#-y 来阅读它,所以我想我会尝试 FSharpX 和他们的 ExcelFile 类型提供程序。
什么有效
提供程序是通过 NuGet 安装并启用的,这有效:
open FSharpX
type Example = ExcelFile<"example.xlsx", "Worksheet1", true>
let file = new Example()
for row in File.Data do ......
什么不
但是,当我尝试使用不同的文件(我在运行时从数据库中提取并存储在临时位置的文件)初始化构造函数时,我得到了一个非常奇怪的类型错误。
let file = new Example(@"c:\temp\path\to.xlsx")
结果是
类型提供程序 'FSharpx.TypeProviders.ExcelProvider+ExcelProvider' 在提供的类型 'FSharpx.ExcelFile,filename="example.xlsx",sheetname="Worksheet1",forcestring="True"', member '的上下文中报告错误。医生'。错误:将表达式拼接成引号文字时类型不匹配。插入的表达式树的类型与拼接操作所期望的类型不匹配。应为“System.String”,但收到类型“System.Tuple`2[System.String,System.String]”。考虑使用预期的表达式类型进行类型注释,例如 (%% x : string) 或 (%x : string)。参数名称:receiveType
嗯?
我不知道它所谈论的元组可能来自哪里,而且我对如何初始化它没有任何其他想法。
额外的问题:如果我想在运行时改变工作表名称怎么办?现有的 FSharpx 提供商似乎不允许这样做。