将数据集/数据表转换为 CSV
请告诉我,是否有任何方法可以从 DataTable 或 DataSet 生成 CSV 文件?具体来说,无需手动迭代 DataTable 的行并连接。
请帮忙
Please let me know, if there any way to generate CSV files from a DataTable or DataSet? To be specific, without manually iterating through rows of DataTable and concatenating.
Please help
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(5)
我希望还有一种可能的方法可以做到这一点:
There is, I hope, also a possible way for doing that:
所以这是一个相当奇怪的解决方案,但它比大多数解决方案运行得更快,因为它利用了 JSON.net 库的序列化。这显着加快了求解速度。
步骤:
简单
使用 JSON.net 将数据表转换为 json 字符串
string json = JsonConvert.SerializeObject(dt, Formatting.None);
开始在 C# 字符串上使用 Replace 函数并去掉
所有json格式的json字符串。
json = json.Replace("\"", "").Replace("},{", "\n").Replace(":", "").Replace("[{ ", "").Replace("}]", "");
然后使用步骤 1 中的数组从
json 字符串。您将得到一个 csv 格式的字符串。
考虑使用步骤 1 中创建的数组来添加列名称
返回为 csv 格式的第一行。
So this is a fairly bizarre solution, but it works faster than most as it makes use of the JSON.net library's serialization. This speeds the solution up significantly.
Steps:
simple
Use JSON.net to convert datatable to a json string
string json = JsonConvert.SerializeObject(dt, Formatting.None);
Begin making use of the Replace function on c# strings and strip the
json string of all json formatting.
json = json.Replace("\"", "").Replace("},{", "\n").Replace(":", "").Replace("[{", "").Replace("}]", "");
Then use the array from step 1 to remove all column names from the
json string. You are left with a csv formatted string.
Consider using the array created in step 1 to add the column names
back in as the first row in csv format.
有几种方法可以做到这一点。
最简单的方法之一(IMO)是使用
FileHelpers Library
There are several ways to do that.
One of the simplest (IMO) is using
FileHelpers Library
一个相对简单、紧凑且相当灵活的解决方案可能是以下扩展方法:
请注意,此解决方案可能会导致大量数据出现问题,在这种情况下,您应该流式输出。引用和格式化当然会使代码变得更加复杂。
A relative simple, compact and quite flexible solution could be the following extension method:
Please note that this solution could cause problems with huge amounts of data, in which case you should stream the output. Quoting and formatting would of course make the code more complex.