• C#操作.csv文件Demo


    1.使用OleDB操作.csv文件,比较费时

     1         public static DataTable GetDataTableFromCsv(string path,bool isFirstRowHeader)
     2         {
     3             string header = isFirstRowHeader ? "Yes" : "No";
     4 
     5             string pathOnly = Path.GetDirectoryName(path);//得到文件夹路径,相当于得到要操作的“数据库”
     6             string fileName = Path.GetFileName(path);//得到文件名,相当于得到要操作的数据库中的数据表
     7 
     8             string sql = @"select * from ["+fileName+"]";//sql语句
     9             //操作数据库的流程
    10             using (OleDbConnection con=new OleDbConnection(@"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + pathOnly +";Extended Properties="Text;HDR=" + header + """))
    11             {
    12                 using (OleDbCommand cmd=new OleDbCommand(sql,con))
    13                 {
    14                     using (OleDbDataAdapter adapter=new OleDbDataAdapter(cmd))
    15                     {
    16                         DataTable dt=new DataTable();
    17                         dt.Locale=CultureInfo.CurrentCulture;
    18                         adapter.Fill(dt);
    19                         return dt;
    20                     }
    21                 }
    22             }         
    23         }
    View Code

    2. 使用文件流操作.csv文件,费时短(txt文件也可以)

     1         public static DataTable ConvertCsvToDataTable(string fileName)
     2         {
     3             DataTable dt=new DataTable();
     4             using (StreamReader sr=new StreamReader(fileName,Encoding.UTF8))
     5             {
     6                 string[] headers = sr.ReadLine().Split(',');//处理头部标题
     7                 foreach (string header in headers)
     8                 {
     9                     dt.Columns.Add(header);
    10                 }
    11                 while (!sr.EndOfStream)
    12                 {
    13                     string[] rows = sr.ReadLine().Split(',');
    14                     DataRow dr = dt.NewRow();
    15                     for (int i = 0; i < headers.Length; i++)
    16                     {
    17                         dr[i] = rows[i];
    18                     }
    19                     dt.Rows.Add(dr);
    20                 }
    21             }
    22             return dt;
    23         }
    View Code

    3.winform中应用

     1         private void btnGet_Click(object sender, EventArgs e)
     2         {
     3             //打开文件对话框
     4             OpenFileDialog ofd=new OpenFileDialog() {Filter = "Csv文件|*.csv|Excel文件|*.xls|所有文件|*.*", InitialDirectory = @"C:UsersLWP1398Desktop",RestoreDirectory = true};
     5             if (ofd.ShowDialog()==DialogResult.OK)
     6             {
     7                 string fileName = ofd.FileName;
     8                 //dgv.DataSource = GetDataTableFromCsv(fileName, true);
     9                 dgv.DataSource = ConvertCsvToDataTable(fileName);
    10             }
    11             MessageBox.Show("ok");
    12         }
    View Code

  • 相关阅读:
    空指针的问题,感觉自己很傻
    在运行微服务架构的时候报错error creating bean h name 'advisor'.. Unsatisfied dependency..constructor argument with index 0...
    hibernate+oracle+主键varchar2类型,增加序列策略注解失败
    hibernate的报错异常
    7777端口的问题
    soapUI模拟发送json数据时,遇到的中文编码问题
    三、数组的使用
    四、内存中的数组
    一、初步认识数组
    二、数组的初始化
  • 原文地址:https://www.cnblogs.com/CSharpLover/p/5198167.html
Copyright © 2020-2023  润新知