Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/fsharp/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
F# 如何在F中使用NPOI逐行获取.xls数据#_F#_Npoi - Fatal编程技术网

F# 如何在F中使用NPOI逐行获取.xls数据#

F# 如何在F中使用NPOI逐行获取.xls数据#,f#,npoi,F#,Npoi,我试图解析一个.xls文件,需要逐行收集所有数据。我可以打一个单独的手机 let example =sheet1.GetRow(5).GetCell(1)|> string 我试图弄清楚如何使用递归函数从第5行到excel工作表末尾的每一行获取数据,除非有一行没有值,然后我想停止。我该怎么做?我来自python背景,用函数式语言思考有点挑战性 提前感谢您的帮助。您可以使用类型提供程序读取xls和xlsx文件,并将数据作为序列处理。您可以跳过前5行,然后以与序列相同的方式访问其余行,使用标

我试图解析一个.xls文件,需要逐行收集所有数据。我可以打一个单独的手机

let example =sheet1.GetRow(5).GetCell(1)|> string
我试图弄清楚如何使用递归函数从第5行到excel工作表末尾的每一行获取数据,除非有一行没有值,然后我想停止。我该怎么做?我来自python背景,用函数式语言思考有点挑战性

提前感谢您的帮助。

您可以使用类型提供程序读取
xls
xlsx
文件,并将数据作为序列处理。您可以跳过前5行,然后以与序列相同的方式访问其余行,使用标题名作为字段名。如果第一个单元格为空,则可以使用
seq.takeWhile
停止读取行:

type TheFile = ExcelFile<"SomeFile.xls">
let file = new TheFile()
let rows = file.Data 
           |> Seq.skip 5 
           |> Seq.takeWhile (fun row->not String.IsNullOrWhitespace row.SomeName)
           |> Seq.map (fun row->row.OrderTotal......0
           ...
键入file=ExcelFile
let file=new TheFile()
让rows=file.Data
|>序号5
|>Seq.takeWhile(趣味行->非String.IsNullOrWhitespace行.SomeName)
|>Seq.map(趣味行->行订单总计……0
...

字段可以是

不要使用14年前过时的
xls
格式作为初学者。改用
xlsx
格式。自2006年以来的所有Excel版本都使用
xlsx
,这是一种定义良好的基于XML的格式。谷歌文档和Office Online(显然)也是如此。如果使用
xlsx
和更小的文件大小,则兼容性问题会少得多。
xlsx
文件是一个包含XML文档的ZIP包,遵循开放式XML规范,而不是使用NPOI。您可以使用ExcelDataReader,通过IDataReader以记录的形式读取数据,甚至加载所有工作表数据表中的s表我正在分析一个仅在.xls中可用的报表,因此我无法更改格式。我还只希望从每个生成的报表中获得某些值,因此我认为ExcelDataReader可能无法与NPOI一样适合它。在这个问题中,您说您希望跳过前5行,然后一直读到最后,或者直到遇到错误为止n空行。您可以通过调用Read 5次来跳过。之后,通过使用序列生成器(我刚通过谷歌搜索找到),我以前没有想过用这种方法。您可能可以使用
IsDbNull
或检查空字段来检测
中的空行,而
条件本身您想过使用它吗?尽管有一些r在登录页中引用Interop,而不是Interop您是什么意思?该软件包位于并支持.NET Standard 2.0和.NET Core 2.0。如果标题仅出现在第5行,您将如何执行?在这种情况下,提供程序似乎不会生成类型。