解决方案 »

  1.   

    为什么直接读取excel, 忽略第一行,根据第二行的值来获得字段对应的列,然后第三行开始读取数据?
      

  2.   

    OLEDB只能把表当数据库表来读,使用的是select * from [sheet1],根本没法忽略第一行
    建议还是换种方式吧
    比如NPOINPOI好处很多,
    1.不依赖OFFICE(可以不装,也可以装WPS,什么版本都行,它只认文件,不依赖windows程序)
    2.兼容32位和64位系统
    3.可以直接读单元格,而不是只能整个表读出来
      

  3.   

    可以用免费版本的Spire.XLS, 也是不需要安装Office, excel 97 ~ 2013都支持。用免费版本的数据导入方法,Workbook workbook = new Workbook();
                 
    workbook.LoadFromFile(@"..\..\parts.xls",ExcelVersion.Version97to2003);
    //Initialize worksheet
    Worksheet sheet = workbook.Worksheets[0];DataTable dataTable = sheet.ExportDataTable();
      

  4.   

    免费版本的Spire.XLS地址,http://www.e-iceblue.com/Introduce/excel-for-net-introduce.html
      

  5.   

    感谢解答,本人对代码操控excel了解甚少,还望明示……
      

  6.   


    using NPOI;
    using NPOI.HSSF.UserModel;
    using NPOI.SS.UserModel;
       public static DataTable Import(string strFileName)
             {
                 DataTable dt = new DataTable();             HSSFWorkbook hssfworkbook;
                 using (FileStream file = new FileStream(strFileName, FileMode.Open, FileAccess.Read))
                 {
                     hssfworkbook = new HSSFWorkbook(file);
                 }
                 ISheet sheet = hssfworkbook.GetSheetAt(0);
                 System.Collections.IEnumerator rows = sheet.GetRowEnumerator();             IRow headerRow = sheet.GetRow(0);
                 int cellCount = headerRow.LastCellNum;             for (int j = 0; j < cellCount; j++)
                 {
                     ICell cell = headerRow.GetCell(j);
                     dt.Columns.Add(cell.ToString());
                 }             for (int i = (sheet.FirstRowNum + 1); i <= sheet.LastRowNum; i++)
                 {
                     IRow row = sheet.GetRow(i);
                     DataRow dataRow = dt.NewRow();                 for (int j = row.FirstCellNum; j < cellCount; j++)
                     {
                         if (row.GetCell(j) != null)
                             dataRow[j] = row.GetCell(j).ToString();
                     }                 dt.Rows.Add(dataRow);
                 }
                 return dt;
             }     private void button6_Click(object sender, EventArgs e)
             {
                 DataTable dt=Import(@"test.xls");//读取xls到datatable中,再从DataTable取数据就容易了            dataGridView1.DataSource = dt;
             }
      

  7.   

    你循环execl 行的时候,可以从第二行开始
      

  8.   

    还是使用NPOI方便的,不会依赖office
    直接读取文件,
    读取单元格