数据文件类似于这样子
A,B,C,D,E
F,G,H,I,J
K,L,M,N,O
.....
每一行的个数都是一样的,现在要得到它一行的具体项目个数
代码如下:DataTable dt = new DataTable();
                DataRow row = null;
                string lineData = null;
               
                string [] split = null;
                
                try
                {
                    StreamReader sr = new StreamReader(File.OpenRead(strCsvPath), System.Text.Encoding.Default);
                    sr.BaseStream.Seek(0, SeekOrigin.Begin);                    for (int k = 0; k < 5; k++)
                    {
                        dt.Columns.Add(k.ToString());
                    }                    while (sr.Peek() > -1)
                    {
                        row = dt.NewRow();                        lineData = sr.ReadLine();
                        split = lineData.Split(new char[] { ',' });                        for (int l = 0; l < 5; l++)
                        {
                            row[l] = split[l];                        }
                        dt.Rows.Add(row);
                    }
                    sr.Close(); 
请教各位要怎么样把代码里的 '5' 这个常量去掉,换成变量?

解决方案 »

  1.   

    for (int l = 0; l < 5; l++)改成for (int l = 0; l < split.Length; l++)
      

  2.   

    lz应该是要读完一行吧?用StreamReader.ReadLine()读一行数据,然后用String.Split(",")得到分割后的数组,长度就可以得到了。
      

  3.   

    嗯..但前面得到长度后,WHILE里就会报异常.现在只好用两个StreamReader来做..感觉浪费了  ^_^!
      

  4.   

    嗯..可惜提供的文件不是XML的
      

  5.   

    DataTable dt = new DataTable();
    DataRow row = null;
    string lineData = null; try
    {
    StreamReader sr = new StreamReader(File.OpenRead(strCsvPath), System.Text.Encoding.Default);

    do 
    {
    lineData = sr.ReadLine();
    if (lineData == "" || lineData == null)
    {
    break;
    } string[] spl = lineData.Split(','); //添加列
    if (spl.Length > dt.Columns.Count)
    {
    for (int k=dt.Columns.Count ; k<spl.Length ; k++)
    {
    dt.Columns.Add(k.ToString());
    }
    } //添加行
    row = dt.NewRow();
    for (int l = 0; l < spl.Length; l++)
    {
    row[l] = split[l]; }
    dt.Rows.Add(row);
    } while(true); 这样的话每行的元素个数可以不相同了!
    没有测试过 楼主自己测试一下~~