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