【发布时间】:2018-07-08 13:04:57
【问题描述】:
您好,我正在尝试使用 CsvHelper 并最终将我的数据写入 .csv 文件,但如果尝试读取数据,结果始终为空。它读取标题,然后 csv.Read() 似乎跳过了所有数据。
Sperrnummer 类定义:
public class Sperrnummer
{
public string Nummer { get; set; }
public DateTime Erstellt { get; set; }
public string Benutzer { get; set; }
public Sperrnummer(string nummer, DateTime erstellt, string benutzer)
{
Nummer = nummer;
Erstellt = erstellt;
Benutzer = benutzer;
}
public Sperrnummer(string nummer)
{
Nummer = nummer;
Erstellt = DateTime.Now;
Benutzer = HttpContext.Current.User.Identity.Name;
}
public Sperrnummer()
{
Nummer = "";
Erstellt = DateTime.Now;
Benutzer = HttpContext.Current.User.Identity.Name;
}
}
这是我的示例文件:
Nummer,Erstellt,Benutzer
03063651976,08.07.2018 13:54:49,MASCHINE\Plopp
03063651977,08.07.2018 13:54:49,MASCHINE\Plopp
03063651978,08.07.2018 13:54:49,MASCHINE\Plopp
03063651979,08.07.2018 13:54:49,MASCHINE\Plopp
03063651971,08.07.2018 13:54:49,MASCHINE\Plopp
03063651972,08.07.2018 13:54:49,MASCHINE\Plopp
03063651973,08.07.2018 13:54:49,MASCHINE\Plopp
这是我的“读者”:
public ActionResult Index()
{
var filePath = Server.MapPath("~/liste.txt");
List<Sperrnummer> sperrnummern = new List<Sperrnummer>();
if (System.IO.File.Exists(filePath)){
using (var reader = new StringReader(filePath))
{
var csv = new CsvReader(reader);
csv.Read();
csv.ReadHeader();
while (csv.Read())
{
var nummer = csv.GetRecord<Sperrnummer>();
sperrnummern.Add(nummer);
}
}
}
else
{
sperrnummern = new List<Sperrnummer>();
}
return View(sperrnummern);
}
生成的“sperrnummern”始终为空。
【问题讨论】:
-
您是否尝试调试此代码? if 语句有效吗?
-
我认为第一次阅读是没有必要的。你失去了那里的标题。
-
是的,调试表明,if 语句工作得很好。文档中建议标头前的 .read() 。
-
有异常处理吗?例如,如果 CSV 行无法解析为您未显示的
Sperrnummer类怎么办? -
CSVHelper 可以一次将所有条记录读入您的收藏。大部分代码都不需要。