C# 将List中的数据导入csv文件中

时间:2023-01-31 09:47:08

//http://www.cnblogs.com/mingmingruyuedlut/archive/2013/01/20/2849906.html

C# 将List中的数据导入csv文件中

将数据保存至文件中,是一个比较常用的功能,数据源可以是多种形式,文件也可以是多种。

这里简单的介绍将List数据导入到CSV文件中的方法。

代码如下所示:

Student类:

C# 将List中的数据导入csv文件中
    public class Student
{
private string id;
public string Id { get { return id; } set { id = value; } } private string name;
public string Name { get { return name; } set { name = value; } } private string age;
public string Age { get { return age; } set { age = value; } }
}
C# 将List中的数据导入csv文件中

模拟一个简单的List数据源:

C# 将List中的数据导入csv文件中
        private List<Student> GetStudentData()
{
List<Student> studentList = new List<Student>(); Student s1 = new Student();
s1.Id = "1";
s1.Name = "haha";
s1.Age = "10"; Student s2 = new Student();
s2.Id = "2";
s2.Name = "xixi";
s2.Age = "20"; Student s3 = new Student();
s3.Id = "3";
s3.Name = "lolo";
s3.Age = "30"; studentList.Add(s1);
studentList.Add(s2);
studentList.Add(s3); return studentList;
}
C# 将List中的数据导入csv文件中

根据文件路径创建相应的文件:

C# 将List中的数据导入csv文件中
        /// <summary>
/// Create target file
/// </summary>
/// <param name="folder">folder</param>
/// <param name="fileName">folder name</param>
/// <param name="fileExtension">file extension</param>
/// <returns>file path</returns>
private string CreateFile(string folder, string fileName, string fileExtension)
{
FileStream fs = null;
string filePath = folder + fileName + "." + fileExtension;
try
{
if (!Directory.Exists(folder))
{
Directory.CreateDirectory(folder);
}
fs = File.Create(filePath);
}
catch (Exception ex)
{ }
finally
{
if (fs != null)
{
fs.Dispose();
}
}
return filePath;
}
C# 将List中的数据导入csv文件中

获取类的属性集合(以便生成CSV文件的所有Column标题):

C# 将List中的数据导入csv文件中
        private PropertyInfo[] GetPropertyInfoArray()
{
PropertyInfo[] props = null;
try
{
Type type = typeof(EricSunApp.Student);
object obj = Activator.CreateInstance(type);
props = type.GetProperties(BindingFlags.Public | BindingFlags.Instance);
}
catch (Exception ex)
{ }
return props;
}
C# 将List中的数据导入csv文件中

对List进行遍历,将数据导入CSV文件中(宗旨就是在一行数据中以逗号进行分割):

C# 将List中的数据导入csv文件中
        /// <summary>
/// Save the List data to CSV file
/// </summary>
/// <param name="studentList">data source</param>
/// <param name="filePath">file path</param>
/// <returns>success flag</returns>
private bool SaveDataToCSVFile(List<Student> studentList, string filePath)
{
bool successFlag = true; StringBuilder strColumn = new StringBuilder();
StringBuilder strValue = new StringBuilder();
StreamWriter sw = null;
PropertyInfo[] props = GetPropertyInfoArray(); try
{
sw = new StreamWriter(filePath);
for(int i = 0; i < props.Length; i++)
{
strColumn.Append(props[i].Name);
strColumn.Append(",");
}
strColumn.Remove(strColumn.Length - 1, 1);
sw.WriteLine(strColumn); //write the column name for(int i = 0; i < studentList.Count; i++)
{
strValue.Remove(0, strValue.Length); //clear the temp row value
strValue.Append(studentList[i].Id);
strValue.Append(",");
strValue.Append(studentList[i].Name);
strValue.Append(",");
strValue.Append(studentList[i].Age);
sw.WriteLine(strValue); //write the row value
}
}
catch(Exception ex)
{
successFlag = false;
}
finally
{
if (sw != null)
{
sw.Dispose();
}
} return successFlag;
}
C# 将List中的数据导入csv文件中

简单例举具体的调用:

C# 将List中的数据导入csv文件中
        private bool EricSunExportData(string folder, string fileName, string fileExtension)
{
List<Student> studentList = GetStudentData();
string filePath = CreateFile(folder, fileName, fileExtension);
bool flag = SaveDataToCSVFile(studentList, filePath);
return flag;
}
C# 将List中的数据导入csv文件中