C#操作Excel(2)-- 打开-读取Excel文档
由于要为某软件实现导出Excel功能,故有此文。
本文的开发环境是Visual Studio 2010 ,C#, Excel 2007。
新建C#工程后打开Solution Explorer,可以看到如下图片:

右键点击Reference->Add References->Browse
选择三个DLL文件(点此下载):
Interop.Excel.dll
Interop.Microsoft.Office.Core.dll
Interop.VBIDE.dll
添加上述三个引用后,Reference标签里的内容如下:

可以看到已经引用了刚才添加的三个DLL文件。OK,下面可以开始写代码了。
首先,在Form1.cs中添加Excel命名空间
- using Excel;
1.新建一个Excel文档并向其中写入内容
下面,为Form1添加Load消息响应函数,添加方法如下所示:

对应的Office_test1_Load函数如下:
- private Excel.Application m_excel;
- private void Office_test1_Load(object sender, EventArgs e)
- {
- m_excel = new Excel.Application();
- m_excel.Application.Workbooks.Add(true);
- int col;
- for (col = 0; col < 10; col++)
- {
- m_excel.Cells[1, col + 1] = col;
- }
- //显示Excel内容
- m_excel.Visible = true;
- }
编译,运行,得到如下效果:

通过上图可以看到一个新的Excel文档被创建了。下面我们再来看看如何打开一个已有的Excel文档。
2.打开一个已有Excel文档并读取其中内容
在读取Excel文档之前,先来观察一下待读取的文档。

如图所示,第一行为标题,第二行为数据。此外,留意一下第一列的内容类型为:”日期“,第三列类型为:”数值“
按照常理,首先添加一个打开按钮,对应OnOpen()监听器。
类成员定义:
- private Excel.Application m_excel;
- private Excel.Workbook m_workbook;
此外,在Onload函数中要实例化m_excel。
- private void OnOpen(object sender, EventArgs e)
- {
- m_workbook = m_excel.Workbooks.Open(
- "C:\\Users\\David_ss\\Desktop\\项目管理\\项目经费收入简表.xlsx",
- Type.Missing, Type.Missing, Type.Missing, Type.Missing,
- Type.Missing, Type.Missing, Type.Missing, Type.Missing,
- Type.Missing, Type.Missing, Type.Missing, Type.Missing,
- Type.Missing, Type.Missing);
- m_excel.Visible = true;
- }
下面,我们要进行文档的读取了。
为了显示内容,我新添了几个控件:如下图所示

然后我们完成 ”显示值“按钮对应的消息响应函数 OnShowValue()
- private void OnShowValue(object sender, EventArgs e)
- {
- Range rng;
- object obj;
- String str;
- rng = (Excel.Range)m_excel.Cells[2, 1];
- obj = rng.Value2;
- System.Diagnostics.Debug.WriteLine(obj.ToString());
- str = rng.NumberFormatLocal;
- System.Diagnostics.Debug.WriteLine(str);
- this.date_ctrl.Value = DateTime.FromOADate(double.Parse(obj.ToString()));
- rng = (Excel.Range)m_excel.Cells[2, 2];
- obj = rng.Value2;
- System.Diagnostics.Debug.WriteLine(obj.ToString());
- str = rng.NumberFormatLocal;
- System.Diagnostics.Debug.WriteLine(str);
- this.serialnumber_ctrl.Text = obj.ToString();
- rng = (Excel.Range)m_excel.Cells[2, 3];
- obj = rng.Value2;
- System.Diagnostics.Debug.WriteLine(obj.ToString());
- str = rng.NumberFormatLocal;
- System.Diagnostics.Debug.WriteLine(str);
- this.money_ctrl.Text = obj.ToString();
- rng = (Excel.Range)m_excel.Cells[2, 4];
- obj = rng.Value2;
- System.Diagnostics.Debug.WriteLine(obj.ToString());
- str = rng.NumberFormatLocal;
- System.Diagnostics.Debug.WriteLine(str);
- this.manager_ctrl.Text = obj.ToString();
- }
上面代码分别对应4个控件的数据显示。
下面是显示的结果:

此外,上面的代码中,我还输出了调试信息,即每个单元格的数据类型:
- str = rng.NumberFormatLocal;
- System.Diagnostics.Debug.WriteLine(str);
调试输出结果:
通过上述结果可以看出:日期格式是日期对应的是一个数字字符串。所以代码中使用的是DateTime的FromOADate方法解析日期。
日期的格式为:yyyy/m/d。
一般的单元格类型是:G/通用格式
数值格式为:0.00_);[红色](0.00)。
-------------------------------------------------------华丽分割-------------------------------------------
若想要了解更多,首先请学习一下Excel的对象模型,可以参考上一篇文章:
当然,也可以下载对应的文档:C#操作Excel2007&Excel对象模型.pdf
C#操作Excel(2)-- 打开-读取Excel文档的更多相关文章
- C#操作Word (2)-- 打开&关闭Word文档
本文正式开始在VS2010中使用C#语言操作Word2007. 不是十分了解Word对象模型的朋友,请参考上一篇文章,或者下载:C#操作Word2007.pdf. ------------------ ...
- VBS读取txt文档数据查找Excel中单元格数据符合条件的剪切到工作表2中
Dim fso,f,a set oExcel = CreateObject( "Excel.Application" ) oExcel.Visible = false '4) 打开 ...
- 使用Apache POI导出Excel小结--导出XLS格式文档
使用Apache POI导出Excel小结 关于使用Apache POI导出Excel我大概会分三篇文章去写 使用Apache POI导出Excel小结--导出XLS格式文档 使用Apache POI ...
- Unity用Excel.dll简单读取Excel内容
Unity用Excel.dll简单读取Excel内容 需要Excel.dll 需要如下三个命名空间 using System.IO; using Excel; using System.Data; 1 ...
- java中XML操作:xml与string互转、读取XML文档节点及对XML节点增删改查
一.XML和String互转: 使用dom4j程式变得很简单 //字符串转XML String xmlStr = \"......\"; Document document = D ...
- java中读取word文档里的内容
package com.cn.peitest.excel.word; import java.io.FileInputStream; import java.io.FileOutputStream; ...
- 【Win10 开发】读取PDF文档
关于用来读取PDF文档的内容的API,其实在Win8.1的时候就有,不过没关系,既咱们讨论的是10的UAP,连同8.1的内容也包括进去,所以老周无数次强调:把以前的内容学好了,就可以在不学习任何新知识 ...
- Python读取word文档(python-docx包)
最近想统计word文档中的一些信息,人工统计的话...三天三夜吧 python 不愧是万能语言,发现有一个包叫做 docx,非常好用,具体查看官方文档:https://python-docx.read ...
- ASP 读取Word文档内容简单示例
以下通过Word.Application对象来读取Doc文档内容并显示示例. 下面进行注册Word组件:1.将以下代码存档命名为:AxWord.wsc XML code复制代码 <?xml ve ...
随机推荐
- php常用正则
平时做网站经常要用正则表达式,下面是一些讲解和例子,仅供大家参考和修改使用: 2. "^\d+$" //非负整数(正整数 + 0) 3. "^[0-9]*[1 ...
- C# 使用Linq递归查询数据库遇到的问题及解决方法
User表通常是我们在写"XX管理系统"项目时必须要用到的,有的情况下人员的分类属于树形结构,就是除了最高层和最低层,中间层都有相对的父和子,设计数据库的时候,我们通常会加一个pa ...
- ansible服务模块和组模块使用
本篇文章主要是介绍ansible服务模块和组模块的使用. 主要模块为ansible service module和ansible group moudle,下面的内容均是通过实践得到,可以直接运行相关 ...
- SharePoint咨询师之路:设计之前的那些事一:容量
提示:本系列只是一个学习笔记系列,大部分内容都可以从微软官方网站找到,本人只是按照自己的学习路径来学习和呈现这些知识. 咨询师更多的时候是解决方案提供者,那么他们如何能够提供有效的SharePoint ...
- 开着奥迪做Uber司机是什么心态?
滴快车单单2.5倍,注册地址:http://www.udache.com/ 如何注册Uber司机(全国版最新最详细注册流程)/月入2万/不用抢单:http://www.cnblogs.com/mfry ...
- [原创]Devexpress XtraReports 系列 7 创建Drill-Down(向下钻取)报表
昨天发表了Devexpress XtraReports系列第六篇[原创]Devexpress XtraReports 系列 6 创建并排报表,今天我们继续. 今天的主题是创建Drill-Down报表. ...
- KMP应用http://acm.hdu.edu.cn/showproblem.php?pid=2594
riemann与marjorie拼接后riemannmarjorie前缀与后缀公共部分为 rie 长度为 3(即next[l] = next[14]的值,l为拼接后的长度)但:aaaa与aa拼接后aa ...
- 用UltraISO制作的u盘ubuntu11.04,启动失败解决方案
错误提示:SYSLINUX 3.84 2009-12-18 EBIOS Copyright c 1994-2009 H.Peter Anvin et al 折腾的很久,尝试用Pauly的bootice ...
- mysql中key 、primary key 、unique key 与index区别
一.key与primary key区别 CREATE TABLE wh_logrecord ( logrecord_id ) NOT NULL auto_increment, ) default NU ...
- 数据库:mongodb与关系型数据库相比的优缺点
与关系型数据库相比,MongoDB的优点:①弱一致性(最终一致),更能保证用户的访问速度:举例来说,在传统的关系型数据库中,一个COUNT类型的操作会锁定数据集,这样可以保证得到“当前”情况下的精 ...