zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    BZOJ3105:[CQOI2013]新Nim游戏(线性基,贪心)
    BZOJ5102:[POI2018]Prawnicy(贪心,堆)
    BZOJ3533:[SDOI2014]向量集(线段树,三分,凸包)
    BZOJ3569:DZY Loves Chinese II(线性基)
    BZOJ3534:[SDOI2014]重建(矩阵树定理)
    【BZOJ 1202】 [HNOI2005]狡猾的商人
    【BZOJ 1003】 [ZJOI2006]物流运输trans
    【BZOJ 2321】 [BeiJing2011集训]星器
    【BZOJ 1010】 [HNOI2008]玩具装箱toy
    【BZOJ 2730】 [HNOI2012]矿场搭建
  • 原文地址:https://www.cnblogs.com/CSharpLover/p/5198167.html
Copyright © 2011-2022 走看看