[英]Import .csv data into class
我有一些代碼可以將類中的數據保存到.csv文件中,但是我不確定如何將其讀回到類中,因此可以將其放入列表視圖中。 這是保存的代碼:
SaveFileDialog save = new SaveFileDialog();
save.Filter = "Excel|*.csv";
if (save.ShowDialog() == DialogResult.OK)
{
StreamWriter sw = new StreamWriter(save.FileName);
try
{
sw.WriteLine("Name" + ";" + "Authors" + ";" + "Pages" + ";" + "Date" + ";" + "Price" + ";" + "Copies");
foreach (Book b in bookList)
{
string aux = "";
aux = string.Join(";", b.Authors);//I know I will probably need to change ';' here because it will have trouble reading it
sw.WriteLine(b.Name + ";" + aux + ";" + b.Pages + ";" + b.Date.ToString("dd.MM.yyyy") + ";" + b.Price + ";" + b.Copies);
}
}
catch (IOException ert)
{
MessageBox.Show(ert.Message);
}
catch (Exception ew)
{
MessageBox.Show(ew.Message);
}
finally
{
sw.Close();
}
}
這實際上很容易。 假設您有以下課程Book
:
public class Book
{
public string Name { get; set; }
public int Pages { get; set; }
public string AuthorName { get; set; }
}
然后,您可以像這樣簡單地閱讀它:
var BooksFromCsv = from row in File.ReadLines(@"C:\books.csv").Where(arg => !string.IsNullOrWhiteSpace(arg) && arg.Length > 0).AsEnumerable()
let column = row.Split(';')
select new Book
{
Name = column[0],
Pages = column[1],
AuthorName = column[2],
};
結果將是IEnumerable<Book>
。 如果要列表或數組,只需附加.ToList()
或.ToArray()
。
如果只想永久保存數據,則可以對對象進行序列化和反序列化,如下所示:
// 救
using (var fs = new FileStream(path, FileMode.Create))
{
var xSer = new XmlSerializer(typeof(objecttype));
xSer.Serialize(fs, myObject);
}
//加載
using (var fs = new FileStream(path, FileMode.Open))
{
var xSer = new XmlSerializer(typeof(objecttype));
myObject = (objecttype)xSer.Deserialize(fs);
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.