原文:刘武|c#如何读取excel文件

使用OLEDB可以对excel文件进行读取,我们只要把该excel文件作为数据源即可。

一 在D盘创建excel文件test.xls:

二 将工作表Sheet1的内容读取到DataSet

C#-Code:
string strConn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=D:/test.xls;"+
"Extended Properties='Excel 8.0'";
DataSet ds = new DataSet();
OleDbDataAdapter oada = new OleDbDataAdapter("select * from [Sheet1$]", strConn);
oada.Fill(ds);

读取的DataSet为:

从图中可以看出excel文件中的第一行变成了DataSet中的列名,这正是系统的默认设置。

三 如果想把第一行也作为数据行,那我们可以给连接字符串添加一个HDR=No属性

如:

C#-Code:
string strConn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=D:/test.xls;"+
"Extended Properties='Excel 8.0;HDR=No'";
DataSet ds = new DataSet();
OleDbDataAdapter oada = new OleDbDataAdapter("select * from [Sheet1$]", strConn);
oada.Fill(ds);

结果也许会让你有点想不到:

第一行的第一列和第三列都变成空的了,这是因为系统把第一列识别成了数字,把第三列识别成了日期,而第一行的数据不符合格式的要求,所以就变成空的了。

四 我们还可以把所有列都做为字符串来读取,只要添加属性IMEX=1即可

C#-Code:
string strConn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=D:/test.xls;"+
"Extended Properties='Excel 8.0;HDR=No;IMEX=1'";
DataSet ds = new DataSet();
OleDbDataAdapter oada = new OleDbDataAdapter("select * from [Sheet1$]", strConn);
oada.Fill(ds);

结果又会如何呢?

是不是再次出乎你的意料,第三行的日期怎么变成数字了,其实excel在转换格式的时候就自动把日期变成数字了,那这个数字是怎么来的呢 ? 如果你把日期改成1900年1月1日,那么你可以看到他的转换结果是1,以此类推,39902是哪一天就明白了吧。

五 也许你并不想读取整个excel的内容

如果只想读取前两列可以用:select * from [Sheet1$A:B]

如果只想读取A1到B2的内容,就用:select * from [Sheet1$A1:B2]

六 如果不知道工作表的名字或名字被人为修改了该怎么办呢?

我们可以通过索引来获取指定工作表的名字,以下方法可以用来获取工作表名称的数组:

C#-Code:
ArrayList al = new ArrayList();string strConn;
strConn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=D:/test.xls;"+
"Extended Properties=Excel 8.0;";
OleDbConnection conn = new OleDbConnection(strConn);
conn.Open();
DataTable sheetNames = conn.GetOleDbSchemaTable
(OleDbSchemaGuid.Tables, new object[] { null, null, null, "TABLE" });
conn.Close();foreach (DataRow dr in sheetNames.Rows)
{
al.Add(dr[2]);
}return al;本文转自齐师傅博客园博客,原文链接:http://www.cnblogs.com/youring2/archive/2009/09/28/1575399.html,如需转载请自行联系原作者

转:C#读取Excel文件 (2009年9月28日)相关推荐

  1. 2009年3月28日四级网络工程师 试卷答案、点评及讨论

    2009年3月28日四级网络工程师 试卷答案.点评及讨论 雁过留声,访者留贴. 欢迎跟贴讨论答案.

  2. 博客园北京俱乐部2009年2月28日活动

    在这次活动之前我只去过一次开源的社区活动,那次参与活动的厂商和Dev大多是JAVA方面的,看着当时比较热闹的场面,很希望.net社区也能组织这样的活动,为大家提供一个交流和娱乐的平台,所以当我在博客园 ...

  3. SQL2005-使用openrowset 里读取excel文件

    很多时候我们都知道使用.net代码去读取word,excel文档,但是我们如何使用sql句语里读取excel文件呢:SQL2005为我们提供了OPENROWSET来访问各种数据源:,当然我还是建议使用 ...

  4. 关于MFC中读取EXCEL文件的操作

    转自:点击打开链接 .h文件的源码代码如下: 其中的头文件都是OLE的头文件.如何导出可以参考 http://blog.csdn.net/wyz365889/article/details/75999 ...

  5. php把excel变成数组,PHP excel读取excel文件转换为数组

    /* 备注:先去下载PHP EXCEL--http://download-codeplex.sec.s-msft.com/Download/Release?ProjectName=phpexcel&a ...

  6. python 读取excel文件 效率 时间 格式_python读取Excel文件中的时间数据

    在使用python读取Excel文件中的时间格式,碰到的时间格式转换问题: 读取这样的表格: 输出这样的数据结果: 然而这样的结果却不是我们想要的,我们需要的是这样的结果: 1.安装python官方库 ...

  7. C#读取Excel文件,准换为list

    经常会用到,废话不多说直接贴代码 //读取Excel文件 public static DataTable ReadExcelToTable(string path)//excel存放的路径 { try ...

  8. C#读取excel文件数据丢失问题

    最近在处理C#读取excel文件时碰到了个BT问题,有部分数据读取失败了,翻看了不少资料,终于找到了问题的所在,所以在这里跟大伙分享下: 简要问题分析: 用C#读取excel文件数据时,出现数据丢失现 ...

  9. R语言读取excel文件实战(read.xlsx函数、read_excel函数、read.xlsx函数、Write函数)

    R语言读取excel文件实战(read.xlsx函数.read_excel函数.read.xlsx函数.Write函数) 目录 R语言读取excel文件实战(read.xlsx函数.read_exce ...

最新文章

  1. win8改win7笔记
  2. 拉格朗日 SVM KKT
  3. php socket(服务端与客户端)demo
  4. 行情分发速度为王,谁是证券公司的生命线?
  5. [Python设计模式] 第1章 计算器——简单工厂模式
  6. 【C语言】排序(算法基础)
  7. 多出口冗余网络设计方案
  8. string字符串转实体类_【Recursion】(6)实战练习:使用递归处理字符串
  9. 为什么阿里巴巴的市值比京东高,世界500排名比京东靠后?
  10. 美团回应“大数据杀熟”;Docker开发者预览版支持M1芯片;GTK 4.0发布|极客头条...
  11. centos安装mysql8及一些问题解决
  12. RubyInstaller
  13. 钽电容器为什么被要求降额到额定值的1/3使用
  14. 路由器、交换机、集线器的区别
  15. 韩媒批其国民都沉迷“美色” 娱乐产业是起因
  16. java 替换空白字符串
  17. 米家APP获取小米、绿米网关key的方法(5.6.81版本)(2020_05_15)
  18. CTF-AWD入门手册
  19. 攻防世界 Ditf misc
  20. Windows 批处理(bat) if条件判断语句使用教程

热门文章

  1. Android Studio项目引入外部库注意事项(PullToRefresh)
  2. VC++在对话框中加入属性页
  3. 创建型模式——Factory Method(未完)
  4. 帖子删除显示帖子名称?
  5. 华硕fx60vm安装macOS10.13.6和Windows10双系统
  6. 关于android.view.WindowLeaked的解决方案
  7. SQL的不合理有效性
  8. Windows下利用TortoiseSVN搭建本地SVN服务器
  9. jQuery之validate验证表单
  10. 监听发现局域网dropbox客户端broadcast-dropbox-listener