读取Excel 2007的xlsx文件和读取老的.xls文件是一样的,都是用Oledb读取,仅仅连接字符串不同而已。

具体代码实例:

public static DataTable GetExcelToDataTableBySheet(string FileFullPath,string SheetName)

{

 //此连接只能操作Excel2007之前(.xls)文件

  string strConn = "Provider=Microsoft.Jet.OleDb.4.0;" + "data source=" + FileFullPath + ";Extended Properties='Excel 8.0; HDR=NO; IMEX=1'"; 

  //此连接可以操作.xls与.xlsx文件

   string strConn = "Provider=Microsoft.Ace.OleDb.12.0;" +"data source=" + FileFullPath + ";Extended Properties='Excel 12.0; HDR=NO; IMEX=1'";

   OleDbConnection conn = new OleDbConnection(strConn);

   conn.Open();

   DataSet ds = new DataSet();

   OleDbDataAdapter odda = new OleDbDataAdapter(string.Format("SELECT * FROM [{0}]", SheetName), conn);

  //OleDbDataAdapter odda = new OleDbDataAdapter(string.Format("select * from [Sheet1$]", conn),conn);                                               

   odda.Fill(ds, SheetName);

   conn.Close();

   ]; 

}

读取Excel文件时,可能一个文件中会有多个Sheet,因此获取Sheet的名称是非常有用的。

代码示例如下:

//根据Excel物理路径获取Excel文件中所有表名 

public static String[] GetExcelSheetNames(string excelFile)

{

            OleDbConnection objConn = null;

            System.Data.DataTable dt = null; 

            try

            {

//此连接只能操作Excel2007之前(.xls)文件

                tring strConn = "Provider=Microsoft.Jet.OleDb.4.0;" + "data source=" + excelFile + ";Extended Properties='Excel 8.0; HDR=NO; IMEX=1'"; 

 //此连接可以操作.xls与.xlsx文件

                string strConn = "Provider=Microsoft.Ace.OleDb.12.0;" +"data source=" + excelFile + ";Extended Properties='Excel 12.0; HDR=NO; IMEX=1'";

                objConn = new OleDbConnection(strConn);

                objConn.Open();

                dt = objConn.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, null);

                if (dt == null)

                {

                    return null;

                }

                String[] excelSheets = new String[dt.Rows.Count];

                ;

                foreach (DataRow row in dt.Rows)

                {

                    excelSheets[i] = row["TABLE_NAME"].ToString();

                    i++;

                } 

                return excelSheets;

            }

            catch

            {

                return null;

            }

            finally

            {

                if (objConn != null)

                {

                    objConn.Close();

                    objConn.Dispose();

                }

                if (dt != null)

                {

                    dt.Dispose();

                }

            }

}

最新文章

  1. 数据结构与算法JavaScript (一) 栈
  2. LA 4329 Ping pong 树状数组
  3. map 容器的使用
  4. ES6 对象解构
  5. spark-env.sh 配置示例
  6. 自己理解的javascript 的对象和类理解
  7. 子句判断、启动强度和去模糊化--AForge.NET框架的使用(三)
  8. SuperSocket学习笔记(二)
  9. C#l连接OPC进行数据交互
  10. python属性查找(attribute lookup)
  11. eclipse neon 发布
  12. 如何用Nginx解决前端跨域问题?
  13. Android艺术——Bitmap高效加载和缓存(1)
  14. mysql 创建备份表
  15. Confluence 6 邮件队列
  16. 20175316 盛茂淞 2018-2019-2 《Java程序设计》实验一 Java开发环境的熟悉 实验报告
  17. Ajax和jsonp区别
  18. scrapyd的安装
  19. Java实例 Part3:流程控制
  20. 相关不同Linux系统的性能监控命令整理

热门文章

  1. 移动应用(手机应用)开发IM聊天程序解决方案
  2. expdp和impdp的用法
  3. 20145305 《Java程序设计》实验五
  4. springmvc数据处理模型
  5. SelectedValue 失效
  6. eclipse设置svn代理
  7. 前后台彻底分离的核心文件bridge.js.
  8. ora-01036 illegal variable name number 的补充
  9. Codeforces 631C
  10. Node.js解析Excel