我已经对CSV文件感兴趣了几年了,但直到现在我都不需要使用它们,所以我对此很新。
我有一个应用程序存储有关用户在运行时创建的控件的信息。我计划使用CSV文件来存储这些信息,用户在将文件打开到我的程序时将在以后提取这些信息。
这些CSV文件将具有以下结构。比方说,例如,用户创建一个LinkLabel,为其分配一些文本,然后创建一个Label并为其分配一些文本。输出文件(CSV文件)如下所示:
CSVFile.csv
LinkLabel,This is LinkLabel's text,170,40
Label,This is Label's text,170,50
说明:
Control,Text,LocationX,LocationY
Control,Text,LocationX,LocationY
..所以,正如您所看到的,信息将始终相同。控制,文本,LocationX,LocationY ...
任何人都可以向我指出任何好的,易于理解的资源,我可以学习如何编写这样的文件吗?然后提取那些信息呢?
谢谢, 杰森。
答案 0 :(得分:3)
我会避免使用csv文件,而是使用xml文件。这将为您提供更多灵活性,并为读者提供支持。
答案 1 :(得分:3)
我使用优秀且免费的FileHelpers库来处理CSV文件。这就是说我不太确定你真的应该使用CSV文件来做你想要做的事情。
Here您可以看到其他人如何实施类似功能。
答案 2 :(得分:2)
我想知道xaml是否不能免费完成你想要的大部分工作?但是如果你想要定制数据,我也会建议csv有它的一天,特别是当数据变得复杂时。有关完整的xml示例(为空格编写,请忽略格式化):
using System;
using System.Collections.Generic;
using System.Xml.Serialization;
public enum ControlType {
Label, LinkLabel
}
[XmlRoot("controls")]
public class ControlWrapper {
[XmlElement("control")] public List<ControlDto> Controls { get; set; }
public ControlWrapper() {
Controls = new List<ControlDto>();
}
}
public class ControlDto {
[XmlAttribute("type")] public ControlType Type { get; set; }
[XmlAttribute("caption")] public string Caption { get; set; }
[XmlAttribute("x")] public int LocationX { get; set; }
[XmlAttribute("y")] public int LocationY { get; set; }
}
static class Program {
static void Main() {
var model = new ControlWrapper {
Controls = {
new ControlDto {
Type = ControlType.LinkLabel,
Caption = "This is LinkLabel's text",
LocationX = 170, LocationY = 40
}, new ControlDto {
Type = ControlType.Label,
Caption = "This is Label's text",
LocationX = 170, LocationY = 50
}
}
};
var ser = new XmlSerializer(typeof(ControlWrapper));
ser.Serialize(Console.Out, model);
}
}
这种方式主要处理对象模型,而不是序列化。实际上,修改上述内容以使用DataContractSerializer
(对于WCF),protobuf-net(可移植二进制)等等将是微不足道的。
答案 3 :(得分:2)
作为XML的轻量级替代品,JSON为您提供了所有这些功能 你似乎在寻找。 JSON只是将对象序列化的一种方式 适合写入文件的字符串,供以后检索。
有一个活跃的JSON用户社区使用JSONSharp模块jsonsharp overview。
关于为什么XML(可能)对您的健康有害的讨论,这里有一个非常有用的帖子:xml is bad for humans
返回有关CSV文件的问题, C#确实不包括任何用于编写和读取csv文件的解决方案,以及其他解决方案 已经提到过,你的第一个停靠点应该是众多库中的一个 如雨后春笋般涌现。
这就是你的结构在JSON中的样子:
["LinkLabel","This is LinkLabel's text",170,40]
答案 4 :(得分:0)
CSV文件的工作方式没有明确的标准,因此使用它们是有问题的。我建议使用XML,因为有一个明确的标准,你可以参考。
使CSV格式出现问题的一些因素:
答案 5 :(得分:-2)
您的问题主要是关于如何写入文件。
Google并阅读了一些示例。
基本上,您正在考虑创建FileStream类的实例并写入磁盘。
我会发一个例子,但你最好先研究一下,然后重新发布一个更具体的问题。
写入CSV实际上只是写入文本文件。