none
EXcel 数据调用报错 ''065 '$' 不是一个有效名称。 不支持表的 数字命名

    问题

  • EXcel 数据调用报错  ''065 '$' 不是一个有效名称。 不支持表的 数字命名

    如图被圈起来的部分  怎么解决?

      OleDbConnection olecon = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + txt_Path.Text + ";Extended Properties=Excel 8.0");
                olecon.Open();//打开数据库连接
                OleDbDataAdapter oledbda = new OleDbDataAdapter("select * from [" + cbox_SheetName.Text + "$]", olecon);//从工作表中查询数据
                DataSet myds = new DataSet();//实例化数据集对象
                oledbda.Fill(myds);//填充数据集    

    这是 我的代码 只支持 xls 

    有没有支持.xlsx 文件的代码?   


    2016年12月7日 21:16

答案

全部回复

  • 考虑更换Jet数据库引擎更换为Access Database Engine(ACE)

    也就是将

    Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + txt_Path.Text + ";Extended Properties=Excel 8.0

    更换成

    string sConn = "provider=Microsoft.ACE.OleDb.12.0; Data Source ='" + sFilePath2003 + "';Extended Properties='Excel 12.0;HDR=yes;IMEX=1';";

     来自  http://www.cnblogs.com/bignjl/articles/1787264.html

    string connString = @"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\MyExcel.xls;Extended Properties=""Excel 8.0;HDR=No;IMEX=1"";";
    DataTable dt = new DataTable();
    OleDbConnection conn = new OleDbConnection(connString);
    OleDbDataAdapter adapter = new OleDbDataAdapter("SELECT * FROM [Sheet1$]", conn);
    adapter.Fill(dt);

    来自 http://stackoverflow.com/questions/4326122/quirky-select-from-excel-file-via-oledbdataadapter-method-c

    专注于.NET ERP/CRM开发框架,C/S架构,SQL Server + ORM(LLBL Gen Pro) + Infragistics WinForms

    • 已标记为答案 ning050089 2016年12月9日 0:19
    • 取消答案标记 ning050089 2016年12月10日 2:49
    2016年12月8日 5:15
  • 这个办法只是一个折中 办法,不是根本解决问题

    下面得到的 表名称  下面拿两个是多余的而且引用也会报错   

    也不支持中文  会出现

    表$$  这样的东西  也会报错

    21640
    '21640$'
    Sheet1$



    2016年12月10日 1:28
  • NPIO   还是比较好用 不用安装 offic  还有许多命令直接调用比较方便
    • 已标记为答案 ning050089 2016年12月10日 2:50
    2016年12月10日 2:50