• 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

  • 相关阅读:
    python入门第十七天_生成器 迭代器
    python入门第十六天__列表生成式
    装饰器补充知识点_ @functools.wraps(func)
    函数练习题2
    函数编程练习题1
    迭代器
    生成器的send方法
    函数写生成器
    斐波那契数列
    生成器
  • 原文地址:https://www.cnblogs.com/CSharpLover/p/5198167.html
Copyright © 2020-2023  润新知