C#操作Excel(2)-- 打开-读取Excel文档

原创 2012年03月27日 18:43:01

由于要为某软件实现导出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的对象模型,可以参考上一篇文章:

Excel对象模型:http://blog.csdn.net/ruby97/article/details/7412197

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

 

版权声明:本文为博主原创文章,未经博主允许不得转载。

C# 打开excel

C#打开Excel文档的两大方法解析 C#打开Excel文档有什么样子的方法来实现呢?C#打开Excel文档会用到哪些方法呢?他们具体的使用方法是什么呢?希望本文对你有所帮助...
  • u013084746
  • u013084746
  • 2016年06月24日 11:15
  • 249

C#创建、打开、读取、写入、保存Excel,Excel打印输出

摘要:本文介绍了Excel对象、C#中的受管代码和非受管代码,并介绍了COM组件在.NET环境中的使用。关键词:受管代码;非受管代码;Excel对象;动态连接库0 引言Excel是微软公司办公自动化套...
  • baogreat
  • baogreat
  • 2007年12月06日 22:22
  • 2790

C#读取Excel五种方式的体会

 (1) OleDb: 用这种方法读取Excel速度还是非常的快的,但这种方式读取数据的时候不太灵活,不过可以在 DataTable 中对数据进行一些删减修改 这种方式将Excel作为一个数据...
  • dapengbusi
  • dapengbusi
  • 2014年07月25日 15:05
  • 12105

C# 读取Excel文件的几种方法【搜集整理】

片段 1 using System.Data.OleDb; ... static void Main() { Application.Run(new Form1()); } private voi...
  • wuyingzhiyi
  • wuyingzhiyi
  • 2016年09月26日 11:02
  • 5764

C#中创建、打开、读取、写入、保存Exce,C#如何向EXCEL写入数据

C#中创建、打开、读取、写入、保存Excel的一般性代码 首先,在引用的COM中找到Microsoft Excel 11.0 Object Library,添加。 using System;  usi...
  • kirawoo
  • kirawoo
  • 2015年06月19日 08:30
  • 38873

c# 选择excel文件,并打开excel

using System; using System.Collections.Generic; using System.ComponentModel; using System.D...
  • lz576825608
  • lz576825608
  • 2013年05月13日 18:02
  • 3542

C# winform 开发之Excel操作(一)------打开Exce表

在开始之前,先要导入Excel的类库。步骤如下:把鼠标移动解决方案---->右击----->选择“添加引用”---->会出现一个对话框---->选择标题为.net的页面----->然后选择“Micro...
  • kkfdsa132
  • kkfdsa132
  • 2010年03月14日 20:07
  • 8130

C# 读取EXCEL文件的三种经典方法

1.方法一:采用OleDB读取EXCEL文件: 把EXCEL文件当做一个数据源来进行数据的读取操作,实例如下: public DataSet ExcelToDS(string Path) { st...
  • mao0514
  • mao0514
  • 2016年07月21日 08:36
  • 7217

C#读取Excel五种方式体会(二)

上一篇文章中,我们找到了三种处理的方式,分别对其优缺点进行了
  • dapengbusi
  • dapengbusi
  • 2014年07月25日 15:17
  • 48173

C#中操作Excel(2)—— 新建、打开、保存和关闭Excel文档

本文中主要介绍C#中对Excel文档进行新建、打开、保存、关闭的方法。在本次试验之前,先布置试验环境。         首先,先新建一个winform的工程ExcelTest:        然后,...
  • lzhui1987
  • lzhui1987
  • 2016年11月16日 11:17
  • 4225
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:C#操作Excel(2)-- 打开-读取Excel文档
举报原因:
原因补充:

(最多只允许输入30个字)