sheet  名字带上 ' '  单引号试试

解决方案 »

  1.   

    最好改变一下sheet命名方式阿
      

  2.   


    因为这是客户从供应商的系统下载的excel文档,所以更改sheet的方式行不通,一份excel有十几个sheet,其中带连字符"-"的至少7个。
      

  3.   

    用这个GetOleDbSchemaTable函数先返回架构信息。在读取表名试一下。。
      

  4.   


    NPOI的缺陷是导入的excel必须格式是excel,现在客户导入的文件有从xml强转成xls的。我已经解决了这个问题。
      

  5.   

    http://www.cnblogs.com/lwme/archive/2011/11/18/npoi_excel_import_export.html IWorkbook workbook = new HSSFWorkbook(stream);//从流内容创建Workbook对象
            ISheet sheet = workbook.GetSheetAt(0);//获取第一个工作表,不需要表名
            IRow row = sheet.GetRow(0);//获取工作表第一行
            ICell cell = row.GetCell(0);//获取行的第一列
            string value = cell.ToString();//获取列的值
      

  6.   


    目前采用的这种方法,已经解决了。我是先单独调试打开一个xls文件,看看sheet是否有问题,使用select * form [A-B$]就可以打开了。
      

  7.   

    谢谢大家的热心帮忙,这个问题已经解决了。具体的解决方案思路如下:1、根据程序抛出的异常来排查问题,具体问题具体分析;
    2、排查excel导入异常,可采用单独一条语句来读取excel,先绕开系统的业务;
    3、在数据库里采用JET或ACE引擎打开excel,文件必须与数据库在同一台机器上,如果打开excel是在程序里,则数据库无关远程或本地,数据库打开excel的好处是sql语句读写方便,程序打开Excel则是后续可支持数据库与程序独立存放(多服务器),主要还是根据业务来;
    4、这次解决的方法:
    select * from OpenRowSet('Microsoft.ACE.OLEDB.12.0', 'Excel 12.0;HDR=Yes;IMEX=1;Database=D:\97-2003.xls', 'select * from [Sheet1$]')参考链接:http://www.cnblogs.com/chencidi/archive/2011/11/19/2255359.html这哥们总结的很全,基本方式都已经有了。
    以上,供后来遇到此问题者参考,谢谢大家的帮忙了。