由于要为某软件实现导出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命名空间

  1. using Excel;

1.新建一个Excel文档并向其中写入内容

下面,为Form1添加Load消息响应函数,添加方法如下所示:

对应的Office_test1_Load函数如下:

  1. private Excel.Application      m_excel;
  2. private void Office_test1_Load(object sender, EventArgs e)
  3. {
  4. m_excel     =   new     Excel.Application();
  5. m_excel.Application.Workbooks.Add(true);
  6. int col;
  7. for (col = 0; col < 10; col++)
  8. {
  9. m_excel.Cells[1, col + 1] = col;
  10. }
  11. //显示Excel内容
  12. m_excel.Visible = true;
  13. }

编译,运行,得到如下效果:

通过上图可以看到一个新的Excel文档被创建了。下面我们再来看看如何打开一个已有的Excel文档。

2.打开一个已有Excel文档并读取其中内容

在读取Excel文档之前,先来观察一下待读取的文档。

如图所示,第一行为标题,第二行为数据。此外,留意一下第一列的内容类型为:”日期“,第三列类型为:”数值“

按照常理,首先添加一个打开按钮,对应OnOpen()监听器。

类成员定义:

  1. private Excel.Application      m_excel;
  2. private Excel.Workbook         m_workbook;

此外,在Onload函数中要实例化m_excel。

  1. private void OnOpen(object sender, EventArgs e)
  2. {
  3. m_workbook = m_excel.Workbooks.Open(
  4. "C:\\Users\\David_ss\\Desktop\\项目管理\\项目经费收入简表.xlsx",
  5. Type.Missing, Type.Missing, Type.Missing, Type.Missing,
  6. Type.Missing, Type.Missing, Type.Missing, Type.Missing,
  7. Type.Missing, Type.Missing, Type.Missing, Type.Missing,
  8. Type.Missing, Type.Missing);
  9. m_excel.Visible = true;
  10. }

下面,我们要进行文档的读取了。

为了显示内容,我新添了几个控件:如下图所示

然后我们完成 ”显示值“按钮对应的消息响应函数 OnShowValue()

  1. private void OnShowValue(object sender, EventArgs e)
  2. {
  3. Range rng;
  4. object obj;
  5. String str;
  6. rng = (Excel.Range)m_excel.Cells[2, 1];
  7. obj = rng.Value2;
  8. System.Diagnostics.Debug.WriteLine(obj.ToString());
  9. str = rng.NumberFormatLocal;
  10. System.Diagnostics.Debug.WriteLine(str);
  11. this.date_ctrl.Value = DateTime.FromOADate(double.Parse(obj.ToString()));
  12. rng = (Excel.Range)m_excel.Cells[2, 2];
  13. obj = rng.Value2;
  14. System.Diagnostics.Debug.WriteLine(obj.ToString());
  15. str = rng.NumberFormatLocal;
  16. System.Diagnostics.Debug.WriteLine(str);
  17. this.serialnumber_ctrl.Text = obj.ToString();
  18. rng = (Excel.Range)m_excel.Cells[2, 3];
  19. obj = rng.Value2;
  20. System.Diagnostics.Debug.WriteLine(obj.ToString());
  21. str = rng.NumberFormatLocal;
  22. System.Diagnostics.Debug.WriteLine(str);
  23. this.money_ctrl.Text = obj.ToString();
  24. rng = (Excel.Range)m_excel.Cells[2, 4];
  25. obj = rng.Value2;
  26. System.Diagnostics.Debug.WriteLine(obj.ToString());
  27. str = rng.NumberFormatLocal;
  28. System.Diagnostics.Debug.WriteLine(str);
  29. this.manager_ctrl.Text = obj.ToString();
  30. }

上面代码分别对应4个控件的数据显示。

下面是显示的结果:

此外,上面的代码中,我还输出了调试信息,即每个单元格的数据类型:

  1. str = rng.NumberFormatLocal;
  2. System.Diagnostics.Debug.WriteLine(str);

调试输出结果:

通过上述结果可以看出:日期格式是日期对应的是一个数字字符串。所以代码中使用的是DateTime的FromOADate方法解析日期。

日期的格式为:yyyy/m/d。

一般的单元格类型是:G/通用格式

数值格式为:0.00_);[红色](0.00)。

-------------------------------------------------------华丽分割-------------------------------------------

若想要了解更多,首先请学习一下Excel的对象模型,可以参考上一篇文章:

当然,也可以下载对应的文档:C#操作Excel2007&Excel对象模型.pdf

C#操作Excel(2)-- 打开-读取Excel文档的更多相关文章

  1. C#操作Word (2)-- 打开&关闭Word文档

    本文正式开始在VS2010中使用C#语言操作Word2007. 不是十分了解Word对象模型的朋友,请参考上一篇文章,或者下载:C#操作Word2007.pdf. ------------------ ...

  2. VBS读取txt文档数据查找Excel中单元格数据符合条件的剪切到工作表2中

    Dim fso,f,a set oExcel = CreateObject( "Excel.Application" ) oExcel.Visible = false '4) 打开 ...

  3. 使用Apache POI导出Excel小结--导出XLS格式文档

    使用Apache POI导出Excel小结 关于使用Apache POI导出Excel我大概会分三篇文章去写 使用Apache POI导出Excel小结--导出XLS格式文档 使用Apache POI ...

  4. Unity用Excel.dll简单读取Excel内容

    Unity用Excel.dll简单读取Excel内容 需要Excel.dll 需要如下三个命名空间 using System.IO; using Excel; using System.Data; 1 ...

  5. java中XML操作:xml与string互转、读取XML文档节点及对XML节点增删改查

    一.XML和String互转: 使用dom4j程式变得很简单 //字符串转XML String xmlStr = \"......\"; Document document = D ...

  6. java中读取word文档里的内容

    package com.cn.peitest.excel.word; import java.io.FileInputStream; import java.io.FileOutputStream; ...

  7. 【Win10 开发】读取PDF文档

    关于用来读取PDF文档的内容的API,其实在Win8.1的时候就有,不过没关系,既咱们讨论的是10的UAP,连同8.1的内容也包括进去,所以老周无数次强调:把以前的内容学好了,就可以在不学习任何新知识 ...

  8. Python读取word文档(python-docx包)

    最近想统计word文档中的一些信息,人工统计的话...三天三夜吧 python 不愧是万能语言,发现有一个包叫做 docx,非常好用,具体查看官方文档:https://python-docx.read ...

  9. ASP 读取Word文档内容简单示例

    以下通过Word.Application对象来读取Doc文档内容并显示示例. 下面进行注册Word组件:1.将以下代码存档命名为:AxWord.wsc XML code复制代码 <?xml ve ...

随机推荐

  1. USB鼠标过一段时间后失灵问题的修复

    现象: USB鼠标计算机锁屏一段时间后,不能动了,拔下来重新插上后,又恢复正常了. 原因: 这是系统默认USB电源管理造成的.一段时间不用后,自动关闭了USB电源. 解决方法: 1.进入设备管理器 在 ...

  2. SQL Server 最小化日志操作解析,应用[手稿]

    Sql Server 中数据库在BULK_LOGGED/SIMPLE模式下的一些操作会采用最小化日志的记录方式,以减小tran log落盘日志量从而提高整体性能. 这里我简单介绍下哪些操作在什么样的情 ...

  3. 【Java多线程】互斥

    Java多线程学习2——互斥 一.前言 在上一节 (http://www.cnblogs.com/lzhen/p/3917966.html) 中,通过实现Runnable接口,可以实现多线程中的资源的 ...

  4. Android中的颜色值RGB对照表表

    Android中颜色值是通过红(Red).绿(Green).蓝 (Blue)三原色,以及一个透明度(Alpha)值来表示的,颜色值总是以井号(#)开头,接下来就是Alpha-Red-Green-Blu ...

  5. Javascript类型转换表

    各种类型的值 转换为各种类型 String Number Boolean Object undefined "undefined" NaN false 报错 null " ...

  6. String - 兴趣解读

    个优点: . 以下代码的HashCode是否相同,它们是否是同个对象: . 以下代码的HashCode是否相同,他们是否是同个对象:        . 以下代码的HashCode是否相同,他们是否是同 ...

  7. 设置sudo权限

    由于CentOS安装之后,普通用户无sudo权限,故应该设置sudo权限. 此处假设当前用户为“cloudgis”. 1. 设置sudo权限,则设置如下: $ su root 输入root 密码 $ ...

  8. accordion data-options iconCls

    <div id="aa" class="easyui-accordion" style="width:500px;height:300px;&q ...

  9. [翻译]创建ASP.NET WebApi RESTful 服务(8)

    本章讨论创建安全的WebApi服务,到目前为止,我们实现的API都是基于未加密的HTTP协议,大家都知道在Web中传递身份信息必须通过HTTPS,接下来我们来实现这一过程. 使用HTTPS 其实可以通 ...

  10. GPIO 配置之ODR, BSRR, BRR 详解

    STM32 GPIO 配置之ODR, BSRR, BRR 详解 用stm32 的配置GPIO 来控制LED 显示状态,可用ODR,BSRR,BRR 直接来控制引脚输出状态. ODR寄存器可读可写:既能 ...