谁有把csv文件读区到DataTable了的代码~麻烦发个,网上查的试了都不好用~哪位有的麻烦发下~~谢谢.

解决方案 »

  1.   

    CSV,写,容易~~~~~~读,难!!!!!!!!如果是固定格式的话,贴一段文档的内容,这会有许多人给你写出读取代码如果格式不固定,借助于OLEDB或ODBC吧
      

  2.   

    导出  
    string sqlstr = "select * from VW_USERINfoOneTwo";
                 SqlConnection Conn = new SqlConnection(ConnectionString);
            SqlCommand Comm = new SqlCommand(sqlstr, Conn);
            SqlDataAdapter SqlDA = new SqlDataAdapter(Comm);
            DataSet ds = new DataSet();
            SqlDA.Fill(ds);
            //Comm.ex
            //  DataTable dt = ds.Tables;
            DataTable dt = ds.Tables[0];
            dt.DataSet.DataSetName = ds.ToString();
            HttpContext.Current.Response.Clear();
            System.IO.StringWriter sw = new System.IO.StringWriter();
            int iColCount = dt.Columns.Count;
            for (int i = 0; i < iColCount; i++)
            {
                sw.Write("\"'" + dt.Columns[i] + "\"");
                if (i < iColCount - 1)
                {
                    sw.Write(",");
                }
            }
            sw.Write(sw.NewLine);
            foreach (DataRow dr in dt.Rows)
            {
                for (int i = 0; i < iColCount; i++)
                {
                    if (!Convert.IsDBNull(dr[i]))
                        sw.Write("\"'" + dr[i].ToString() + "\"");
                    else
                        sw.Write("\"\"");
                    if (i < iColCount - 1)
                    {
                        sw.Write(",");
                    }
                }
                sw.Write(sw.NewLine);
            }
            sw.Close();
            HttpContext.Current.Response.AddHeader("Content-Disposition", "attachment; filename=ss.csv");
            HttpContext.Current.Response.ContentType = "application/vnd.ms-excel";
            HttpContext.Current.Response.ContentEncoding = System.Text.Encoding.GetEncoding("GB2312");
            HttpContext.Current.Response.Write(sw);
            HttpContext.Current.Response.End();我正在使用《Csdn收音机》第一时间获取最新动态!
      

  3.   

    对不起啊,我测试一下CSDN收音机,前面发的内容别在意哦我正在使用《Csdn收音机》第一时间获取最新动态!
      

  4.   


    // C# 读写CSV文件到DataTable
    public interface ICSVWriterReader  
    {//define a interface  
         string CSVFile { get; set; } //csv file  
        DataTable Read();//read csv to DataTable.  
        bool Write(DataTable dt); //convert datatable to csv  
    }      public class CSVHelper:ICSVWriterReader  
        {  
            private string _csvFile;  
      
            public CSVHelper(string csvFile)  
            {  
                this._csvFile = csvFile;  
            }  
     
            #region ICSVWriterReader Members  
      
            public string CSVFile  
            {  
                get{ return _csvFile; }  
                set{ _csvFile=value ;}  
            }  
      
            public DataTable Read()  
            {  
                FileInfo fi = new FileInfo(this._csvFile);  
                if (fi == null || !fi.Exists) return null;  
      
                StreamReader reader = new StreamReader(this._csvFile);  
      
                string line = string.Empty; int lineNumber = 0;  
      
                DataTable dt = new DataTable();  
      
                while ((line = reader.ReadLine()) != null)  
                {  
                    if (lineNumber == 0)  
                    {//Create Tole  
                        dt = CreateDataTable(line);  
                        if (dt.Columns.Count == 0) return null;  
                    }  
                    else  
                    {  
                        bool isSuccess = CreateDataRow(ref dt, line);  
                        if (!isSuccess) return null;  
                    }  
                    lineNumber++;  
                }  
      
                return dt;  
            }  
      
            public bool Write(DataTable dt)  
            {  
                FileInfo fi = new FileInfo(this._csvFile);  
                if (fi == null || !fi.Exists) return false;  
      
                if (dt == null || dt.Columns.Count == 0 || dt.Rows.Count == 0) return false;  
      
                StreamWriter writer = new StreamWriter(this._csvFile);  
                //writer.AutoFlush = true;  
      
                string line = string.Empty;  
      
                line = CreateTitle(dt);  
                writer.WriteLine(line);  
      
                foreach (DataRow dr in dt.Rows)  
                {  
                    line = CretreLine(dr);  
                    writer.WriteLine(line);  
                }  
      
                writer.Flush();  
      
                return true;  
            }  
      
      
            private DataTable CreateDataTable(string line)  
            {  
                DataTable dt = new DataTable();  
                foreach (string field in   
                    line.Split(FormatSplit, StringSplitOptions.None))  
                {  
                    dt.Columns.Add(field);  
                }  
                return dt;  
            }  
      
            private bool CreateDataRow(ref DataTable dt, string line)  
            {  
                DataRow dr = dt.NewRow();  
      
                string[] fileds=line.Split(FormatSplit, StringSplitOptions.None);  
      
                if (fileds.Length == 0 || fileds.Length != dt.Columns.Count) return false;  
      
                for (int i = 0; i < fileds.Length; i++)  
                {  
                    dr[i] = fileds[i];  
                }  
      
                dt.Rows.Add(dr);  
                return true;  
            }  
      
            private char[] FormatSplit  
            {  
                get { return new char[] { ',' }; }  
            }  
      
            private string CreateTitle(DataTable dt)  
            {  
                string line = string.Empty;  
      
                for (int i = 0; i < dt.Columns.Count; i++)  
                {  
                    line += string.Format("{0}{1}", dt.Columns[i].ColumnName,FormatSplit[0].ToString());  
                }  
      
                line.TrimEnd(FormatSplit[0]);  
      
                return line;  
            }  
      
            private string CretreLine(DataRow dr)  
            {  
                string line = string.Empty;  
      
                for (int i = 0; i < dr.ItemArray.Length;i++)  
                {  
                    line += string.Format("{0}{1}", dr[i], FormatSplit[0].ToString());  
                }  
      
                line.TrimEnd(FormatSplit[0]);  
      
                return line;  
            }  
     
            #endregion  
        }  
    }  
      

  5.   

    string csvPath = textBox1.Text;
                        string fileFullName = Path.GetFileName(csvPath);
                        string folderPath = csvPath.Substring(0, csvPath.LastIndexOf('\\') + 1);                    string connStr = string.Format(@"Provider=Microsoft.Jet.OLEDB.4.0;Data Source={0};Extended Properties='text;HDR=Yes;IMEX=1'", folderPath); 
                      string sql = string.Format(@"SELECT * FROM [{0}]", fileFullName);  
                        OleDbDataAdapter da = new OleDbDataAdapter(sql, connStr);
                        
                        da.Fill(ds)
    用了个openfile控件来选择csv
      

  6.   

    这个是openfile选择文件按钮
    private void button1_Click(object sender, EventArgs e)
            {
                openFileDialog1.InitialDirectory = System.Windows.Forms.Application.ExecutablePath;
                openFileDialog1.Filter = "excel Files(*.csv)|*.csv|All Files(*.*)|*.*";
                if (openFileDialog1.ShowDialog() == DialogResult.OK)
                {
                    this.textBox1.Text = openFileDialog1.FileName;
                }
            }