转:C#读取Excel文件 (2009年9月28日)
原文:刘武|c#如何读取excel文件
使用OLEDB可以对excel文件进行读取,我们只要把该excel文件作为数据源即可。
一 在D盘创建excel文件test.xls:
二 将工作表Sheet1的内容读取到DataSet
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属性
如:
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即可
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]
六 如果不知道工作表的名字或名字被人为修改了该怎么办呢?
我们可以通过索引来获取指定工作表的名字,以下方法可以用来获取工作表名称的数组:
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日)相关推荐
- 2009年3月28日四级网络工程师 试卷答案、点评及讨论
2009年3月28日四级网络工程师 试卷答案.点评及讨论 雁过留声,访者留贴. 欢迎跟贴讨论答案.
- 博客园北京俱乐部2009年2月28日活动
在这次活动之前我只去过一次开源的社区活动,那次参与活动的厂商和Dev大多是JAVA方面的,看着当时比较热闹的场面,很希望.net社区也能组织这样的活动,为大家提供一个交流和娱乐的平台,所以当我在博客园 ...
- SQL2005-使用openrowset 里读取excel文件
很多时候我们都知道使用.net代码去读取word,excel文档,但是我们如何使用sql句语里读取excel文件呢:SQL2005为我们提供了OPENROWSET来访问各种数据源:,当然我还是建议使用 ...
- 关于MFC中读取EXCEL文件的操作
转自:点击打开链接 .h文件的源码代码如下: 其中的头文件都是OLE的头文件.如何导出可以参考 http://blog.csdn.net/wyz365889/article/details/75999 ...
- php把excel变成数组,PHP excel读取excel文件转换为数组
/* 备注:先去下载PHP EXCEL--http://download-codeplex.sec.s-msft.com/Download/Release?ProjectName=phpexcel&a ...
- python 读取excel文件 效率 时间 格式_python读取Excel文件中的时间数据
在使用python读取Excel文件中的时间格式,碰到的时间格式转换问题: 读取这样的表格: 输出这样的数据结果: 然而这样的结果却不是我们想要的,我们需要的是这样的结果: 1.安装python官方库 ...
- C#读取Excel文件,准换为list
经常会用到,废话不多说直接贴代码 //读取Excel文件 public static DataTable ReadExcelToTable(string path)//excel存放的路径 { try ...
- C#读取excel文件数据丢失问题
最近在处理C#读取excel文件时碰到了个BT问题,有部分数据读取失败了,翻看了不少资料,终于找到了问题的所在,所以在这里跟大伙分享下: 简要问题分析: 用C#读取excel文件数据时,出现数据丢失现 ...
- R语言读取excel文件实战(read.xlsx函数、read_excel函数、read.xlsx函数、Write函数)
R语言读取excel文件实战(read.xlsx函数.read_excel函数.read.xlsx函数.Write函数) 目录 R语言读取excel文件实战(read.xlsx函数.read_exce ...
最新文章
- win8改win7笔记
- 拉格朗日 SVM KKT
- php socket(服务端与客户端)demo
- 行情分发速度为王,谁是证券公司的生命线?
- [Python设计模式] 第1章 计算器——简单工厂模式
- 【C语言】排序(算法基础)
- 多出口冗余网络设计方案
- string字符串转实体类_【Recursion】(6)实战练习:使用递归处理字符串
- 为什么阿里巴巴的市值比京东高,世界500排名比京东靠后?
- 美团回应“大数据杀熟”;Docker开发者预览版支持M1芯片;GTK 4.0发布|极客头条...
- centos安装mysql8及一些问题解决
- RubyInstaller
- 钽电容器为什么被要求降额到额定值的1/3使用
- 路由器、交换机、集线器的区别
- 韩媒批其国民都沉迷“美色” 娱乐产业是起因
- java 替换空白字符串
- 米家APP获取小米、绿米网关key的方法(5.6.81版本)(2020_05_15)
- CTF-AWD入门手册
- 攻防世界 Ditf misc
- Windows 批处理(bat) if条件判断语句使用教程
热门文章
- Android Studio项目引入外部库注意事项(PullToRefresh)
- VC++在对话框中加入属性页
- 创建型模式——Factory Method(未完)
- 帖子删除显示帖子名称?
- 华硕fx60vm安装macOS10.13.6和Windows10双系统
- 关于android.view.WindowLeaked的解决方案
- SQL的不合理有效性
- Windows下利用TortoiseSVN搭建本地SVN服务器
- jQuery之validate验证表单
- 监听发现局域网dropbox客户端broadcast-dropbox-listener