使用CsvHelper仅将选定列写入CSV文件

时间:2015-07-31 14:11:31

标签: c# csv csvhelper

我有一个从Web服务获取数据的小程序。该程序接受JSON响应,将其映射到POCO并将对象写入CSV文件(自动化)。当我在数据集中询问“全部”数据时,它工作得很好,但是,如果我查询资源(通过OData),如下所示:“$ select EmpNo,FirstName,LastName”,CSV编写器仍将写入所有列到CSV标题,例如“EmpNo,FirstName,LastName,Street,Address,City,Age”等,只需将0(如果是int),false(如果是布尔值)或“”(如果是字符串)插入到没有数据的列中。

Web服务只能正确返回指定的列,因此不是问题。我使用CsvHelper进行对象映射和CSV编写。 (但我愿意使用任何可以解决我问题的方法)

我只想将“EmpNo,FirstName,LastName”和列数据写入CSV文件,如果这是我在OData查询中要求的那样。

解决这个问题有什么好主意吗?

2 个答案:

答案 0 :(得分:2)

如果不知道您正在使用的确切代码,很难说清楚。但我的猜测是,当你编写你的对象列表时,你正在使用其中包含额外字段的模型,这些字段都是空的,因为你没有通过odata请求它们。

如果您只想使用CsvHelper的子集,您可能需要指定CsvClassMap<T>并将现有模型映射到您想要的字段

这里有很多关于CsvClassMap的例子:http://joshclose.github.io/CsvHelper/

write方法可能会有一个方法重载,它将采用类图。

答案 1 :(得分:0)

您可以创建ClassMapper并从对象中指定要编写的属性(以及编写方式!)
https://joshclose.github.io/CsvHelper/examples/configuration/class-maps/mapping-properties

然后在编写时,只需指定ClassMapper

const [total, setTotal] = useState(0);