大家都知道ADO.NET关系数据库,经过详细的调查用的人还是蛮多的,为此呢给大家介绍介绍ADO.NET Excel读取的问题。在关系数据库提供的各种对象中(表、视图、存储过程等),Excel 数据源仅提供相当于表的对象,它由指定工作簿中的工作表和定义的命名区域组成。命名区域被视为“表”,而工作表被视为“系统表”)这里我们将ADO.NET Excel读取也当作一个“数据库”来对待,然后利用OleDbConnection.GetOleDbSchemaTable 方法,要获取所需的架构信息,该方法获取的架构信息与ANSI SQl-92是兼容的。
成都网站建设公司更懂你!创新互联公司只做搜索引擎喜欢的网站!成都网站制作前台采用搜索引擎认可的DIV+CSS架构,全站HTML静态,HTML5+CSS3网站,提供:网站建设,微信开发,微信小程序,商城开发,手机APP定制开发,域名申请,服务器租售,网站代托管运营,微信公众号代托管运营。
#T#注意:对于那些不熟悉 OLE DB 架构行集的人而言,它们基本上是由 ANSI SQL-92 定义的数据库构造的标准化架构。每个架构行集具有为指定构造提供定义元数据的一组列(称作 .NET 文档中的“限制列”)。这样,如果请求架构信息(例如,列的架构信息或排序规则的架构信息),则您会明确知道可以得到哪种类型的数据。如果希望了解更多信息,请访问 Appendix B:Schema Rowsets。以下是读取Excel文件内“表”定义元数据,并显示出来的的ADO.NET Excel读取程序片断:
- Code// 读取Excel数据,填充DataSet// 连接字符串
- string xlsPath = Server.MapPath("~/app_data/somefile.xls");
- string connStr = "Provider=Microsoft.Jet.OLEDB.4.0;" +
- "Extended Properties=\"Excel 8.0;HDR=No;IMEX=1\";
- " + // 指定扩展属性为
- Microsoft Excel 8.0 (97) 9.0 (2000) 10.0 (2002),并且***行作为数据返回,且以文本方式读取
- "data source=" + xlsPath;string sql_F = "SELECT * FROM [{0}]";
- OleDbConnection conn = null;OleDbDataAdapter da = null;
- DataTable tblSchema = null;IList
tblNames = null; - // 初始化连接,并打开conn = new OleDbConnection(connStr);conn.Open();
- // 获取数据源的表定义元数据
- //tblSchema = conn.GetSchema("Tables");
- tblSchema = conn.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, new object[] { null, null, null, "TABLE" });
- GridView1.DataSource = tblSchema;GridView1.DataBind();
- // 关闭连接conn.Close();
接着是一段利用“架构信息”动态读取Excel内部定义的表单或者命名区域的程序片断:
- Codexcel数据,填充DataSet// 连接字符串
- string xlsPath = Server.MapPath("~/app_data/somefile.xls");
- string connStr = "Provider=Microsoft.Jet.OLEDB.4.0;" +
- "Extended Properties=\"Excel 8.0;HDR=No;IMEX=1\";
- " + // 指定扩展属性为 Microsoft Excel 8.0 (97) 9.0 (2000) 10.0 (2002),并且***行作为数据返回,且以文本方式读取
- "data source=" + xlsPath;string sql_F = "SELECT * FROM [{0}]";
- OleDbConnection conn = null;OleDbDataAdapter da = null;DataTable tblSchema = null;
- IList
tblNames = null; - // 初始化连接,并打开conn = new OleDbConnection(connStr);
- conn.Open();// 获取数据源的表定义元数据
- //tblSchema = conn.GetSchema("Tables");
- tblSchema = conn.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, new object[] { null, null, null, "TABLE" });
- //GridView1.DataSource = tblSchema;//GridView1.DataBind();
- // 关闭连接//conn.Close();
- tblNames = new List
(); - foreach (DataRow row in tblSchema.Rows)
- {
- tblNames.Add((string)row["TABLE_NAME"]);
- // 读取表名}// 初始化适配器da = new OleDbDataAdapter();
- // 准备数据,导入DataSetDataSet ds = new DataSet();
- foreach (string tblName in tblNames)
- {
- da.SelectCommand = new OleDbCommand(String.Format(sql_F, tblName), conn);
- try {
- da.Fill(ds, tblName);
- }
- catch {
- // 关闭连接
- if (conn.State == ConnectionState.Open) {
- conn.Close();
- }throw;
- }
- }// 关闭连接if (conn.State == ConnectionState.Open)
- {
- conn.Close();}// 对导入DataSet的每张sheet进行处理
- // 这里仅做显示GridView1.DataSource = ds.Tables[0];GridView1.DataBind();
- GridView2.DataSource = ds.Tables[1];GridView2.DataBind();
- // more codes
- // 这里我们就不需要对SELEC 语句进行“硬编码”,可以根据需要动态的构造FROM 字句的“表名”。
当前文章:学习笔记:教你使用ADO.NETExcel读取文件
当前URL:http://www.csdahua.cn/qtweb/news2/307752.html
网站建设、网络推广公司-快上网,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等
声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 快上网