为什么如果我使用CsvProvider<>F#创建一个新的CSV类型,如下所示:
type ThisCsv = CsvProvider<Schema = "A (decimal), B (string), C (decimal)", HasHeaders = false>
Run Code Online (Sandbox Code Playgroud)
然后创建/填充/保存.csv,生成的文件不包含我指定的架构中的标头?似乎应该有一种方法在最终的.csv文件中包含标题,但事实并非如此.
设置HasHeaders = true错误,因为没有提供样本.工作的唯一方法HasHeaders = true是获得样本.csv.在我看来,应该有一种方法来指定没有样本的模式,并在最终文件中包含标头.
我在使用时遗漏[nameOfMyCSV].Save()了哪些内容可以包含模式中的标题,或者这可以不做?
Pio*_*ski 12
我担心来自的标题Schema仅用于行的属性名称.要将它们保存在您保存的文件中,您必须提供Sample.但是,样本只能包含标题.此外,HasHeaders必须设置为true:
type ThisCsv = CsvProvider<
Sample="A, B, C",
Schema = "A(decimal), B, C(decimal)",
HasHeaders = true>
Run Code Online (Sandbox Code Playgroud)
如果示例仅包含标题,那么如果要指定数据类型,则还必须提供模式.
只有在重命名Sample标题时,才能看到模式仅用于属性Schema:
type ThisCsv = CsvProvider<
Sample="A, B, C",
Schema = "A->AA(decimal), B->BB, C(decimal)",
HasHeaders = true>
Run Code Online (Sandbox Code Playgroud)
然后生成的行都会有样特性AA,B,CC.但是生成的文件仍会有A,B,C.此外,Headers使用此架构创建的csv 的属性将是Some [|"A"; "B"; "C"|]:
// Run in F# Interactive
let myCsv = new ThisCsv([ThisCsv.Row(1.0m, "a", 2.0m)])
myCsv.Headers
// The last line returns: Some [|"A"; "B"; "C"|]
Run Code Online (Sandbox Code Playgroud)
另外,为了更好地理解解析器内部发生的事情值得一看GitHub中的源代码:一般是CSV文件夹,特别是CsvRuntime.fs.
| 归档时间: |
|
| 查看次数: |
329 次 |
| 最近记录: |