下面代码不知道怎么了,以前一直没问题的 现在 只能读出  Excel 的第一列的数据了请教!
  Excel 有二张工作表。不知是不是这个原因 
 //读取数据
                string strConn = "Provider=Microsoft.Jet.Oledb.4.0;Data Source=" + SavePath + @"\" + SaveFile + ";Extended Properties='Excel 8.0;HDR=Yes;IMEX=1'";
                OleDbConnection conn = new OleDbConnection(strConn);
                OleDbDataAdapter adp = new OleDbDataAdapter("Select * from [sheet1$]", conn);
                DataSet ds = new DataSet();
                adp.Fill(ds, "List");

解决方案 »

  1.   

    你的select已经限定了只读取sheet1的数据了
      

  2.   

    代码看来没有问题吧,Select * from [sheet1$],这个sheet1$是指定那个工作表的
      

  3.   


    我是只要读 [sheet1$] 表的数据。表里有很多列,现在不知道怎么只能读出第一列来。
      

  4.   


    不是,我是调试看 DataSet 里面的,只有一列数据。
      

  5.   

    用nopi读读试试,很方便。http://archive.cnblogs.com/a/1912137/欢迎光临我的博客
      

  6.   

     DataTable Excel_UserInfo = new DataTable();
    string strConn = @"Provider=Microsoft.ACE.OLEDB.12.0;" + "Data Source=" + fileInfo.FullName + ";" + "Extended Properties=\"Excel 12.0;HDR=YES;IMEX=1;\"";
                    string strExcel = "select * from [sheet1$]";                using (OleDbDataAdapter adaptor = new OleDbDataAdapter(strExcel, strConn))
                    {
                        DataSet ds = new DataSet();
                        adaptor.Fill(ds);
                        Excel_UserInfo = ds.Tables[0];
                    }或者复制一份 把你的另一个sheet删除 只留一个感觉不应该是sheet的问题
      

  7.   

    sheet1是表名,这个不是索引,你会不会没有这个表名或者第二个表叫这个名,只有一列呢,把EXCEL切个图吧
      

  8.   


    真是 sheet的问题 
    删了就好了         。
      

  9.   


     为什么有两张 sheet 就不行了。。?
    求解呀
      

  10.   

    你新建一个EXCEL 建立2个SHEET 然后整几行数据试下。
      

  11.   


        public static void MyXlsToExcelByDataSet(DataSet ds, string ExcelFileName, string[] ExcelWorkBokName)
        {
            XlsDocument xlsDocument = new org.in2bits.MyXls.XlsDocument();
            xlsDocument.FileName = HttpUtility.UrlEncode(System.Text.Encoding.UTF8.GetBytes(ExcelFileName)) + ".xls";
            for (int t = 0; t < ds.Tables.Count; t++)
            {
                //Excel工作表名称
                Worksheet worksheet = xlsDocument.Workbook.Worksheets.AddNamed(ExcelWorkBokName[t]);
                Cells cells = worksheet.Cells;
                int columns = ds.Tables[t].Columns.Count;
                for (int i = 0; i < columns; i++)//列名
                {
                    cells.Add(1, (i + 1), ds.Tables[t].Columns[i].ColumnName.ToString().Trim());
                }
                for (int j = 0; j < ds.Tables[t].Rows.Count; j++)
                {
                    for (int k = 0; k < columns; k++)
                    {
                        cells.Add(j + 2, (k + 1), ds.Tables[t].Rows[j][k].ToString().Trim());
                    }
                }
            }
            xlsDocument.Send();
        }这个方法难道有问题?