使用 OLEDB读取 excel(不用Excel对象).

参考: How to read from an Excel file using OLEDB

为了使用方便,我做成了工具类(OledbHelp.cs),好以后使用.

注:连接字符串中,Provider=xx是从这个连接模仿,主要是考虑是否把第1行当成表头: http://www.connectionstrings.com/excel/

OledbHelp.cs类的代码:

 1 using System;
 2 using System.Collections.Generic;
 3 using System.Linq;
 4 using System.Text;
 5 using System.Data.OleDb;
 6 using System.Data;
 7 using System.Collections;
 8
 9 namespace Oledb {
10     class OledbHelp {
11         public string FileName { get; private set; }
12         private string ConnectString = null;
13
14         /// <summary>
15         /// if contains header.
16         /// </summary>
17         readonly bool hasHeader = false;
18         public bool HasHeader { get { return hasHeader; } }
19
20         /// <summary>
21         /// Initialize connection string.
22         /// </summary>
23         /// <param name="fileName">full file name.</param>
24         /// <param name="hasHeader">ture if the .xls file contains header;otherwise false.</param>
25         public OledbHelp(string fileName, bool hasHeader) {
26             if (string.IsNullOrEmpty(fileName)) throw new ArgumentNullException("fileName");
27             FileName = fileName;
28             this.hasHeader = hasHeader;
29             ConnectString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=‘" + FileName + "‘;";
30
31             //specify it contains header.
32             if (HasHeader)
33                 ConnectString += "Extended Properties=‘Excel 12.0 Xml;HDR=YES‘";
34         }
35
36         public OleDbConnection GetConnection() {
37             return new System.Data.OleDb.OleDbConnection(ConnectString);
38         }
39
40         public DataSet GetDataSet(string sql, OleDbConnection connection) {
41             OleDbDataAdapter adapter = new OleDbDataAdapter(sql, connection);
42             DataSet set = new DataSet();
43             adapter.Fill(set);
44             return set;
45         }
46
47         /// <summary>
48         /// Get DataRows by specified column-name.
49         /// </summary>
50         /// <param name="set">The input set.</param>
51         /// <param name="columnName">The specified column-name</param>
52         /// <returns></returns>
53         public List<DataRow> GetDataRow(DataSet set, string columnName) {
54             DataTable t = set.Tables[0];    //get the first table as default.
55             List<DataRow> rows = new List<DataRow>();
56             foreach (DataRow r in t.Rows) {
57                 rows.Add((DataRow)r[columnName]);
58             };
59             return rows;
60         }
61     }
62 }

主调用代码:

1 string fileName = @"D:\cs\office\excel\excel_data\tmp.xls";
2             string sql = "select [姓名] from [msg$]"; //可以在sql 语句指定列字段.
3             OledbHelp ole = new OledbHelp(fileName, true);
4             using (OleDbConnection conn = ole.GetConnection()) {
5                 DataSet set = ole.GetDataSet(sql, conn);
6                 dgv.DataSource = set.Tables[0];
7             }

运行的效果:

时间: 2024-10-13 19:34:55

使用 OLEDB读取 excel(不用Excel对象).的相关文章

采用OleDB读取EXCEL文件 读取数字后,字符串无法读取

很多人采用OleDB读取EXCEL文件的时候会发现,当一列数据以数字开头的时候,后面的字符串无法读取,今天就给大家分享一下解决此问题的小窍门. 1.把列标题当做数据来读取(HDR=NO设置把第一行当做数据而不是表头来处理):  string strConn = "Provider=Microsoft.ACE.OLEDB.12.0;" + "Data Source=" + fileName + ";" +                     &

读取、写入excel数据

在实际项目中,不可避免的会操作excel表格.一直以来都是读取excel表格,可今天为了写入excel表格,可是煞费苦心,终于完成,记录下来以便后续使用. 1.读取excel表格的数据 读取excel数据,然后导入到数据库中,根据常识,只要是能得到一个dataset,那所有的问题便迎刃而解了.下面将读取excel数据得到dataset: public DataSet ExecleDs(string filenameurl) { string strConn = "Provider=Microso

Java的poi技术读取和导入Excel

报表输出是Java应用开发中经常涉及的内容,而一般的报表往往缺乏通用性,不方便用户进行个性化编辑.Java程序由于其跨平台特性,不能直接操纵Excel.因此,本文探讨一下POI视线Java程序进行Excel的读取和导入. AD:WOT2014:用户标签系统与用户数据化运营培训专场 项目结构: 用到的Excel文件: XlsMain .java 类 //该类有main方法,主要负责运行程序,同时该类中也包含了用poi读取Excel(2003版) import java.io.FileInputSt

java操作office和pdf文件java读取word,excel和pdf文档内容

在平常应用程序中,对office和pdf文档进行读取数据是比较常见的功能,尤其在很多web应用程序中.所以今天我们就简单来看一下Java对word.excel.pdf文件的读取.本篇博客只是讲解简单应用.如果想深入了解原理.请读者自行研究一些相关源码. 首先我们来认识一下读取相关文档的jar包: 1. 引用POI包读取word文档内容 poi.jar 下载地址 http://apache.freelamp.com/poi/release/bin/poi-bin-3.6-20091214.zip 

java处理Excel文件---excel文件的创建,删除,写入,读取

这篇文章的代码是我封装的excel处理类,包含推断excel是否存在,表格索引是否存在,创建excel文件,删除excel文件,往excel中写入信息,从excel中读取数据. 尤其在写入与读取两个方法中,我採用了java反射机制去实现,以object对象作为參数就可以.代码自己主动解析该实体类的属性与方法.代码重用性高. 代码另一些须要改进和扩展的地方.大家能够依据实际情况进行简单改动. 上代码,首先是我封装的这个类(採用的是POI包): package module.system.commo

Python xlrd、xlwt、xlutils读取、修改Excel文件

Python xlrd.xlwt.xlutils读取.修改Excel文件 一.xlrd读取excel 这里介绍一个不错的包xlrs,可以工作在任何平台.这也就意味着你可以在Linux下读取Excel文件. 首先,打开workbook:    import xlrdwb = xlrd.open_workbook('myworkbook.xls') 检查表单名字:    wb.sheet_names() 得到第一张表单,两种方式:索引和名字    sh = wb.sheet_by_index(0)s

Asp.net 从Excel读取图片并保存,无法从内存读取图片,Excel组件和相关IIS的配置及解决办法

</pre>目的:Asp.net web页面,读取Excel,(用的office组件),中的图片注意的事项:<p></p><p>只提供部分代码,因为重点是配置.</p><p>1:要想从Excel里读取图片,只能用剪贴板的方面将图片复制到内存然后再保存图片.</p><p>2:剪贴板的使用要引用WinForm</p><p>3: Excel是单线程的方式,所以代码里使用剪贴板也要用单线程的方式

lucent检索技术之创建索引:使用POI读取txt/word/excel/ppt/pdf内容

在使用lucent检索文档时,必须先为各文档创建索引.索引的创建即读出文档信息(如文档名称.上传时间.文档内容等),然后再经过分词建索引写入到索引文件里.这里主要是总结下读取各类文档内容这一步. 一.之前做过一个小工具也涉及到读取word和excel内容,采用的是com组件的方式来读取.即导入COM库,引入命名空间(using Microsoft.Office.Interop.Word;using Microsoft.Office.Interop.Excel;),然后读代码如下: 读取word

Java使用POI读取和写入Excel指南

Java使用POI读取和写入Excel指南 做项目时经常有通过程序读取Excel数据,或是创建新的Excel并写入数据的需求: 网上很多经验教程里使用的POI版本都比较老了,一些API在新版里已经废弃,这里基于最新的Apache POI 4.0.1版本来总结一下整个读取和写入Excel的过程,希望能帮助到需要的人 ^_^ 1. 准备工作 1.1 在项目中引入Apache POI相关类库 引入 Apache POI 和 Apache POI-OOXML 这两个类库,Maven坐标如下: <depe