博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
DataTable 与 Excel文件(CSV)相互转化
阅读量:5941 次
发布时间:2019-06-19

本文共 1952 字,大约阅读时间需要 6 分钟。

在一个项目中,需要从Excel文件导入数据然后再datagridview上显示,同时也需要右键datagridview时可以将数据另存为excel文件,于是写了这两个工具方法。本文提供了两个方法用于Excel和DataTable之间相互转化。

1, 从Excel文件、CSV文件导入到DataTable:

 

  1. public static DataTable csvToDataTable(string file)  
  2.  {  
  3.      string strConn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + file + ";Extended Properties='Excel 8.0;'"// Excel file  
  4.  if(file.EndsWith(".csv"))  
  5.          strConn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + path + ";Extended Properties='TEXT;HDR=Yes;FMT=Delimited;'"// csv file:HDR=Yes-- first line is header  
  6.      OleDbConnection oleConn = new OleDbConnection(strConn);  
  7.      oleConn.Open();  
  8.      DataTable sheets = oleConn.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, null);  
  9.      if (sheets == null || sheets.Rows.Count < 1)  
  10.      {  
  11.          return null;  
  12.      }  
  13.      String fileName = sheets.Rows[0]["TABLE_NAME"].ToString(); // sheets.Rows[0] -- first sheet of excel  
  14.  if(file.EndsWith(".csv"))  
  15.   fileName = file.Substring(file.LastIndexOf("/"));  
  16.      string olestr = "select * from [" + fileName + "]";  
  17.      if (file.EndsWith(".csv"))  
  18.          olestr = "select * from [" + fileName + "]";  
  19.      OleDbCommand oleComm = new OleDbCommand(olestr, oleConn);  
  20.      oleComm.Connection = oleConn;  
  21.      OleDbDataAdapter oleDa = new OleDbDataAdapter();  
  22.      oleDa.SelectCommand = oleComm;  
  23.      DataSet ds = new DataSet();  
  24.      oleDa.Fill(ds);  
  25.      oleConn.Close();  
  26.      return ds.Tables[0];  
  27.  }  

2,DataTable到出到CSV文件:

 

  1. public static void dataTableToCsv(DataTable table, string file)  
  2.         {  
  3.             string title = "";  
  4.  
  5.             FileStream fs = new FileStream(file, FileMode.Create);  
  6.             StreamWriter sw = new StreamWriter(new BufferedStream(fs), System.Text.Encoding.Default);  
  7.  
  8.             for (int i=0; i<table.Columns.Count; i++)  
  9.             {  
  10.                 title += table.Columns[i].ColumnName + ",";  
  11.             }  
  12.             title = title.Substring(0, title.Length - 1) + "\n";  
  13.             sw.Write(title);  
  14.  
  15.             foreach (DataRow row in table.Rows)  
  16.             {  
  17.                 string line = "";  
  18.                 for (int i = 0; i < table.Columns.Count; i++)  
  19.                 {  
  20.                     line += row[i].ToString() + ",";  
  21.                 }  
  22.                 line = line.Substring(0, line.Length - 1) + "\n";  
  23.  
  24.                 sw.Write(line);  
  25.             }  
  26.  
  27.             sw.Close();  
  28.             fs.Close();  
  29.         }  
  30.     }  
  31.  
  32.  

本文出自 “” 博客,请务必保留此出处

转载地址:http://nomtx.baihongyu.com/

你可能感兴趣的文章
测试之路
查看>>
终于对了
查看>>
RabbitMQ集群
查看>>
Apache防盗链和隐藏版本信息
查看>>
ARP协议与路由
查看>>
SCI检索介绍
查看>>
Android开发之生成自己的签名文件及App签名打包
查看>>
如何提高阿里云上应用的可用性(二)
查看>>
云宏WinCloud前端工程师告诉你什么是UI扁平化
查看>>
如何压缩PDF文件,有什么简单的方法
查看>>
SpringMVC常用注解标签详解
查看>>
day18 Set集合
查看>>
Oracle event之db file read
查看>>
ORA 00600 [ktrexc_1]
查看>>
Docker 安装
查看>>
查询文件系统容量与每个目录的容量
查看>>
如何确定一个网站是用Wordpress开发的
查看>>
我的友情链接
查看>>
我的友情链接
查看>>
wdcp 安装
查看>>