加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

C#操作Excel时出现错误:“'Sheet1$' 不是一个有效名称”的解决方案

(2013-12-05 16:21:46)
标签:

excel

c

分类: C#、Excel

对于出现如题的错误,本人的另一篇博文已经指出原因,那么怎样才能自动获得Excel中各个sheet的名称呢?这样就能动态的选中返回那个sheet的数据,即使用户更改了名称也不怕,完全可以把所有sheet的名称列出来供用户选择。下面就把解决问题的代码列出来,主要用到了OleDbConnection.GetOleDbSchemaTable()方法。

         ///
         /// 执行导入
         ///
         /// Excel文件名
         /// DataSet
         public static DataSet doImport(string strFileName)
         {
             if (strFileName == "")
                 return null;
             else
             {
                 DataSet ExcelDs = new DataSet();
                 try
                 {
                     //Excel数据库连接串
                     strConn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source = '" + strFileName + "';Extended Properties ='Excel 8.0;HDR=NO;IMEX=1'";
                     OleDbConnection OleDB = new OleDbConnection(strConn);//打开数据源连接
                     OleDB.Open();//打开连接
                     //返回Excel的架构,包括各个sheet表的名称,类型,创建时间和修改时间等
                     System.Data.DataTable dtSheetName = OleDB.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, new object[] { null, null, null, "Table" });
                     //声明包含excel中表名的字符串数组
                     string[] strTableNames = new string[dtSheetName.Rows.Count];
                     //将表名存入数组中
                     for (int k = 0; k < dtSheetName.Rows.Count; k++)
                     {
                         strTableNames[k] = dtSheetName.Rows[k]["TABLE_NAME"].ToString();
                     }
                     //从指定的表名查询数据
                     string strSheet = "select * from [" + strTableNames[0] + "]";
                     OleDbDataAdapter ExcelDA = new OleDbDataAdapter(strSheet, OleDB);//连接数据库
                     ExcelDA.Fill(ExcelDs, "ExcelInfo");
                 }
                 catch (Exception err)
                 {
                     MessageBox.Show(err.Message.Tostring(), "错误提示");
                 }
                 return ExcelDs;
             }

0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有