转 C#操作Excel(2)-- 打开-读取Excel文档
2014-01-13 15:07
976 查看
本文的开发环境是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命名空间
[csharp] view
plaincopy
using Excel;
1.新建一个Excel文档并向其中写入内容
下面,为Form1添加Load消息响应函数,添加方法如下所示:
对应的Office_test1_Load函数如下:
[csharp] view
plaincopy
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()监听器。
类成员定义:
[csharp] view
plaincopy
private Excel.Application m_excel;
private Excel.Workbook m_workbook;
此外,在Onload函数中要实例化m_excel。
[csharp] view
plaincopy
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()
[csharp] view
plaincopy
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个控件的数据显示。
下面是显示的结果:
此外,上面的代码中,我还输出了调试信息,即每个单元格的数据类型:
[csharp] view
plaincopy
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
转自:http://blog.csdn.net/ruby97/article/details/7400016
新建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命名空间
[csharp] view
plaincopy
using Excel;
1.新建一个Excel文档并向其中写入内容
下面,为Form1添加Load消息响应函数,添加方法如下所示:
对应的Office_test1_Load函数如下:
[csharp] view
plaincopy
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()监听器。
类成员定义:
[csharp] view
plaincopy
private Excel.Application m_excel;
private Excel.Workbook m_workbook;
此外,在Onload函数中要实例化m_excel。
[csharp] view
plaincopy
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()
[csharp] view
plaincopy
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个控件的数据显示。
下面是显示的结果:
此外,上面的代码中,我还输出了调试信息,即每个单元格的数据类型:
[csharp] view
plaincopy
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
转自:http://blog.csdn.net/ruby97/article/details/7400016
相关文章推荐
- C#操作Excel(2)-- 打开-读取Excel文档
- C#操作Excel(2)-- 打开-读取Excel文档
- C#中操作Excel(2)—— 新建、打开、保存和关闭Excel文档
- C# Excel 创建、打开、读取、写入、保存的一般性代码
- C#操作Excel文件(读取Excel,写入Excel)
- C#操作Excel文件(读取Excel,写入Excel)
- C#操作Excel(打开、保存方式,设置单元格、字体操作,c#颜色转换为Excel颜色的方式)
- C#操作Excel(读取)
- VC++ 中操作Excel文档的方法,读取,查询,写入,修改,删除
- C#中创建、打开、读取、写入、保存Excel的一般性代码[转]
- C#操作Excel文件(读取Excel,写入Excel)
- java操作office和pdf文件:读取word,excel和pdf文档内容
- C#操作Excel文件(读取Excel,写入Excel)
- 【c#操作office】--OleDbDataAdapter 与OleDbDataReader方式读取excel,并转换为datatable
- asp.net 2.0(C#)中读取Excel文档的技巧
- Java程序员从笨鸟到菜鸟之(一百零三)java操作office和pdf文件(一)java读取word,excel和pdf文档内容
- C#操作Excel(读取)
- C#操作Excel文件(读取Excel,写入Excel)
- C#中的Excel操作【1】——设置Excel单元格的内容,打开Excel文件的一种方式
- c# 读取写入excel单元格(包括对excel的一些基本操作)【总结篇】