c# 读取excel时,我要读取A,B,C三列,但是之前D列填写过数据(现在已经把数据清除)的话,
把数据读取到datatable中的时候, excel默认读取4列的值(d列全部为空值)怎么能只读取三列的值啊 ?请高手指教

解决方案 »

  1.   

    手动指定只读3列。
    因为你用的(智能)判断,第4列(D列)不为空,它读数据出来了,
    第5列才为null,所以它停止读,这样就导致读了4列。
      

  2.   


    不是我的(智能)判断 ,是微软的c#的(智能)判断。
    我不想判断,我只想得到:对用户而言,用户的excel 有几列的数据,我就读几列的数据 出来 可以做到吗 
      

  3.   

    你可以使用sql直接读execlSELECT * into FROM OpenDataSource('MICROSOFT.JET.OLEDB.4.0','User ID=Admin;Password=;Data Source=你的Execl路径;Extended Properties=''Excel 8.0;IMEX=1''')...Execl工作区间名$
      

  4.   

    SELECT * FROM OpenDataSource('MICROSOFT.JET.OLEDB.4.0','User ID=Admin;Password=;Data Source=你的Execl路径;Extended Properties=''Excel 8.0;IMEX=1''')...Execl工作区间名$
      

  5.   

    对用户而言,用户的excel 有几列可以看到的数据, 我程序就读几列。。
    对于 之前用户清除的数据列 程序当然也不应该认为有空数据 。。 
      

  6.   

    SELECT A,B,C FROM OpenDataSource('MICROSOFT.JET.OLEDB.4.0','User ID=Admin;Password=;Data Source=你的Execl路径;Extended Properties=''Excel 8.0;IMEX=1''')...Execl工作区间名$
      

  7.   

    Excel的确存在这个问题,只有根据需要指定列,对于行判断每个单元格不同时为空
      

  8.   

    打开excel 模板
    Excel.Worksheet sheet = GetWorksheetByName(sheetName);
    Excel.Range rang = sheet.get_Range("A1", "AM24");
    System.Array values = (Array)rang.Cells.Value2;Excel.Range ran=(Excel.Range)mSheet.Cells[i,j];   
    if(ran.Value2==null)
    {}
      

  9.   


    要结贴了。。
    说一下我目前的做法 :我不再判断 用户的excel 有几列可以识别的数据 也不管读入datatable中的列是否空列,空数据 。
    我只取我需要的三列 就好了。