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


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

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

     

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

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

    代码如下所示:

    Student类:

    复制代码
        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; } }
        }
    复制代码

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

    复制代码
            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;
            }
    复制代码

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

    复制代码
            /// <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;
            }
    复制代码

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

    复制代码
            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;
            }
    复制代码

    对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;
            }
    复制代码

    简单例举具体的调用:

    复制代码
            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;
            }
    复制代码
  • 相关阅读:
    04-struts2框架中获取servlet api及Result结果类型
    03-Action类的创建方式及访问
    一位资深程序员大牛给予Java初学者的学习建议(转)
    C++中数组指针
    Ubuntu 开机出现 grub rescue> 终端模式修复方法
    windows和linux双系统下扩容方法
    C 字符串处理
    C++类中变量定义初始化总结
    python创建xml
    OpenBlas compile centOS6.7 ./kernel/x86_64/dgemm_kernel_4x4_haswell.S:2548: Error: no such instruction: `vpermpd $
  • 原文地址:https://www.cnblogs.com/TNSSTAR/p/4283855.html
Copyright © 2020-2023  润新知