【发布时间】:2014-09-19 12:18:52
【问题描述】:
这里的目标是在输入 csv 文件后,一个神奇的工具会输出 c# 类,其中包含 csv 中的字段。我们来看例子。
输入 myFile.csv:
Year,Make,Model
1997,Ford,E350
2000,Mercury,Cougar
输出 myFile.cs
public class myFile
{
public string Year;
public string Make;
public string Model;
}
所以,我唯一需要修复的是属性的类型。之后我会使用这个类和 FileHelpers 来读取 csv 文件。稍后它将被映射到 EntityFramework 类(使用 AutoMapper)并保存到数据库。
实际上,https://csv2entity.codeplex.com/ 看起来正在做我需要的事情,但它只是不起作用 - 我安装了它,我的 Visual Studio 中没有任何变化,也没有出现新模板。这个项目完全死了。开放源代码和......决定也许我会在stackoverflow中问这个问题:)
FileHelpers 只有一个简单的向导,允许您手动添加字段。但我有 50 个字段,这不是我最后一次需要这样做,所以这里首选自动化解决方案。
我相信这个问题之前已经解决了很多次,有什么帮助吗?
【问题讨论】:
-
我认为从中创建 XML 文件会非常容易; XML 到类是标准的。
-
这是一个 MS 建议,可以更笼统地说:msdn.microsoft.com/en-us/library/bb387090.aspx
-
这个类是在运行时生成的,还是只是在寻找生成代码文件的方法,以便后续编译?
-
查看“csv2entity”代码,我认为您几乎可以重用他的代码并使其工作。如果您打开 Ezfx.Csv.Templates 项目,您将看到一个名为“Wizard”的文件夹,在该文件夹内有一个名为“ClassWizard”的类。该类正在内存中生成 .cs 文件并将其写入磁盘。该过程非常简单.. 从文件 (CsvConfig) 生成一个 CSV 配置类,然后使用 GetPropertyCode() 方法为每一列 (CsvColumn) 生成一个 C# 属性字符串,然后将其附加到 StringBuilder。我认为你至少可以重用他 80% 的代码。
-
PeterSchneider Schneider:一般来说是可行的,但是如果没有这样的工具来做 csv -> xml 也没有意义,不是吗?您提供的链接只是告诉如何手动操作。这个问题的目标是用自动化的方法得到答案。 stovroz:它只生成一次,而不是在运行时。 DoubleScorpio:我再次查看了源代码并设法编译了它。而且,是的,我可以使用大部分代码,或者只是自己实现所有内容。但也许外面的某个地方有一个已经有效的解决方案?目前看来,您的建议是唯一可行的选择。