一个.CSV文件,里面有不规则表,求用datagird或其它形式显示在网页上A         B           C            D             E
账号:  "3202004809000463231 " //注意帐号里的数字占了BCD三个单元格 
交款               0 800,000.00 20,437,024.00//用excel打开为数字变成######,但把单元格一拉就还原成数字

如果把文件扩展名改为.xls,表格会严重变形

解决方案 »

  1.   

    .CSV应该是以逗号分隔的数据文件,可以直接把其当成文本文件来处理,而不用看做Excel的文件。
      

  2.   

    你可以把这个文件当做数据源使用OleDB来从其中获取数据,参考代码如下:public static DataSet GetDataTable(string fileName, string sql, out string err)
    {
    sError = null;
    string constr = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + fileName + ";Extended Properties='text;HDR=No;FMT=Delimited'";
    OleDbConnection cn = new OleDbConnection(constr);
    DataSet ds = null;
    try
    {
    cn.Open();
    OleDbDataAdapter ada = new OleDbDataAdapter(sql, cn);
    ds = new DataSet();
    ada.Fill(ds);
    }
    catch (Exception ex)
    {
    err= ex.Message;
    }
    finally
    {
    cn.Close();
    }
    return ds;
    }
      

  3.   

    CSV文本文件而已,行用回车换行符分隔,列用逗号分隔
    用StreamReader读到字符串ReadLine,然后Split(',')到字符串数组
      

  4.   

    /// <summary>
            /// 把一个CSV文件读到一个DataTable中
            /// </summary>
            /// <param name="strpath">文件完整路径</param>
            /// <returns>DataTable</returns>
            public static DataTable GetTable(string strpath)
            {
                Regex reg = new Regex("\",\"");
                int intColCount = 0;
                DataTable mydt = new DataTable("myTableName");            //DataColumn mydc;
                //DataRow mydr;            //string strpath = "";
                string strline;
                string[] aryline;            StreamReader mysr = new StreamReader(strpath,System.Text.Encoding.Default);
                strline = mysr.ReadLine();            aryline = reg.Split(strline);            intColCount = aryline.Length;
                for (int i = 0; i < aryline.Length; i++)
                {
                    DataColumn mydc = new DataColumn(aryline[i].Replace("\"", ""), typeof(string));
                    mydt.Columns.Add(mydc);
                }
                
                while ((strline = mysr.ReadLine()) != null)
                {
                    aryline = reg.Split(strline);
                    
                    DataRow mydr = mydt.NewRow();
                    for (int i = 0; i < intColCount; i++)
                    {
                        mydr[i] = aryline[i].Replace("\"","");
                    }
                    mydt.Rows.Add(mydr);
                }
                return mydt;
            }
      

  5.   

    和读取TXT文件一样,然后只要对账号这个值进行处理,使之占有B对应的单元格,然后使C,D单元格默认为空.
      

  6.   

    请问这一句的public static DataSet GetDataTable(string fileName, string sql, out string err)最后面out string是什么意思?out我都没见过