笔记整理 使用OleDb,将Excel导入DataSet
2012-07-16 01:48
363 查看
public class ExcelUtil { /// <summary> /// 从Excel文件导入DataSet /// Excel的连接字符串说明(详细参看 http://www.connectionstrings.com/excel ): /// HDR=Yes 表示第一行是表头,没有数据,读取时忽略第一行。设置为 No 时则从第一行读取。 /// IMEX=1 表示告诉OleDb驱动,所有数据将作为字符串读取(numbers,dates等) /// 注意:有时候因为ISAM驱动没有安装,设置HDR和IMEX会出异常。去掉即可。 /// </summary> /// <param name="fileName">Excel文件路径</param> /// <param name="firstRowIsHeader">第一行是否是表头</param> /// <returns>Excel数据,一个Sheet对应一个DataTable</returns> public static DataSet GetDataSetFromExcel(string fileName, string sheetName = "", bool firstRowIsHeader = true) { if (!System.IO.File.Exists(fileName)) throw new ArgumentException("file is not exist!"); var ds = new DataSet(); var strConn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source='{0}';Extended Properties=Excel 8.0;"; //if (firstRowIsHeader) // strConn += "HDR=Yes;"; strConn = string.Format(strConn, fileName); using (var conn = new OleDbConnection(strConn)) { conn.Open(); DataTable excelSchema = null; string sql = "select * from [{0}]"; var adapter = new OleDbDataAdapter(); adapter.SelectCommand = conn.CreateCommand(); if (string.IsNullOrEmpty(sheetName)) { excelSchema = conn.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, new object[] { null, null, null, "TABLE" }); foreach (DataRow row in excelSchema.Rows) { var sheet = row["TABLE_NAME"].ToString(); sql = string.Format(sql, sheet); adapter.SelectCommand.CommandText = sql; adapter.Fill(ds, sheet); } } else { sql = string.Format(sql, sheetName + "{1}quot;); adapter.SelectCommand.CommandText = sql; adapter.Fill(ds, sheetName); } conn.Close(); } return ds; } }
上面代码中46行的 "quot;" 应为 "$"
Excel查询的时候,加上范围也可以。这样就能指定范围获得数据。比如: (1) string sql = "select * from [{0}A:C]"; (2) string sql = "select * from [{0}A1:C100]";
使用:
private void btnExcel2Data_Click(object sender, EventArgs e) { openFileDialog1.Filter = "Excel Files | *.xls"; var ret = openFileDialog1.ShowDialog(); if (ret == System.Windows.Forms.DialogResult.OK) { DataSet ds = GetDataSetFromExcel(openFileDialog1.FileName, false); this.dataGridView1.DataSource = ds.Tables[0]; } }
相关文章推荐
- [zz]使用OleDb,将Excel导入DataSet
- [zz]使用OleDb,将Excel导入DataSet
- 使用OleDb,将Excel导入DataSet
- 使用OleDb,将Excel导入DataSet
- 使用OleDb,将Excel导入DataSet
- .NET项目笔记——使用NPOI读取Excel导入数据和导出Excel的功能
- 利用OleDb方式对DataSet 和 Excel 数据快速导入导出
- 利用OleDb方式对DataSet 和 Excel 数据快速导入导出
- asp.net中Excel导入(使用微软OLEDB驱动)
- ASP.NET- 使用OLEDB导入Excel连接字符串的HDR=YES; IMEX=1详解
- C#使用oledb方式将excel数据导入到datagridview后数据被截断为 255 个字符
- 如何将dataSet中的数据导入到Excel文件(*.xls)整理
- asp.net中Excel导入(使用微软OLEDB驱动)
- 利用OleDb方式对DataSet 和 Excel 数据快速导入导出
- asp.net 解决使用OLEDB导入excel数据时同时包含文本和数字的列无法正常读取情况
- SQL SERVER使用OpenRowset,、OpenDataSource函数导入、导出数据到Excel 的几种方法(整理)
- SQL SERVER使用OpenRowset,、OpenDataSource函数导入、导出数据到Excel 的几种方法(整理)
- 使用ASP.NET OleDb驱动程序 导入到处EXCEL
- thinkphp5 , tp5 导入 Excel ,phpExcel 插件使用,文件上传
- ThinkPHP3.1.3使用phpExcel1.8.0实现数据从Excel表格导入mysql数据库