首页 > 代码库 > .NET中使用OleDb读取Excel
.NET中使用OleDb读取Excel
在.NET中可以用OleDb(Object linking and embeding DataBase)来访问Excel
1 using System; 2 using System.Data; 3 using System.Windows.Forms; 4 using System.Data.OleDb; 5 6 namespace ExcelDemo 7 { 8 public partial class Form1 : Form 9 {10 public Form1()11 {12 InitializeComponent();13 }14 15 private void button1_Click(object sender, EventArgs e)16 {17 //xls为Excel2003-2007版本的Excel文件后缀,而xlsx为2007以上版本的后缀名18 //var dt = ExcelToDataTable(@"E:\WorkSpace\VS\ExcelDemo\test.xls", "sheet1");19 var dt = ExcelToDataTable(@"E:\WorkSpace\VS\ExcelDemo\test.xlsx", "sheet1");20 this.dataGridView1.DataSource=dt;21 }22 private DataTable ExcelToDataTable(string strExcelFileName, string strSheetName)23 {24 //Jet和Ace都是连接Excel对象的接口引擎,但是二者有区别.25 //string strConn = "Provider=Microsoft.Jet.OLEDB.8.0;" + "Data Source=" + strExcelFileName + ";" + 26 //"Extended Properties=‘Excel 8.0;HDR=Yes;IMEX=1‘;";27 string strConn = @"Provider=Microsoft.Ace.OLEDB.12.0;" + "Data Source=" + strExcelFileName + ";" + 28 "Extended Properties=‘Excel 12.0;HDR=Yes;IMEX=1‘;";29 string strExcel = string.Format("select * from [{0}$]", strSheetName);30 //创建OleDb连接,对于特定的数据源类型,传入不同的连接字符串31 OleDbConnection connection = new OleDbConnection(strConn);32 connection.Open();33 OleDbDataAdapter da = new OleDbDataAdapter(strExcel,connection);34 var ds = new DataSet();35 da.Fill(ds,strSheetName);36 return ds.Tables[strSheetName];37 }38 }39 }
最开始用的Excel对象接口引擎为Jet,但是在测试时发现对于Excel2013版本的文件,在执行到31行时会报错"外部表不是标准格式".将Excel另存为2003-2007版本时不报错.
原来Jet引擎和Ace引擎是有区别的,具体参考 http://blog.csdn.net/xifeijian/article/details/8333396
.NET中使用OleDb读取Excel
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。