Visual C# 操作 Excel 文件(一) 基本操作

在 Visual C# 中要操作 Excel 文件必须先调用 Excel 的 COM 组件,调用的方式就是在项目中添加引用,如下图:


引用後,会增加两项:


将 Excel 的 COM 添加入引用後,就可以编写程序代码来操作 Excel 了。先来看一下底下的一段代码:

Excel.Application aExcelApp = new Excel.Application();
aExcelApp.Visible = true;
Excel.Workbook aBook1 = aExcelApp.Workbooks.Add();
Excel.Worksheet aSheet1 = (Excel.Worksheet)aBook1.Sheets[1];
Excel.Range aRange = aSheet1.get_Range("A1");
aRange.Value2 = "Hello!";
aBook1.Close();
aExcelApp.Quit();


记得先在源代码文件开头处添加对 Excel 对象的命名空间引用:

using Excel = Microsoft.Office.Interop.Excel;

 上面这一段代码执行时会开启一个 Excel 空档,然後在 Sheet1 的 A1 填入"Hello!"。

Excel 的四个基本对象

Microsoft Excel 对象模型很多不同的对象,但最重要丶用得最多的,则是下列四个对象。

(1) Application :代表一个 Excel 程序。
(2) WorkBook :代表一个 Excel 工作簿。
(3) WorkSheet :代表一个 Excel 工作表,一个 WorkBook 包含好几个工作表。
(4) Range :代表 WorkSheet 中的一个或多个单元格。

正如上面的代码中所但到的,Application 对象的 Workbooks 属性表示该 Excel 中的工作簿集合,而 Workbook 对象的 Sheets 属性代表了该工作簿的表格集合,包括了工作表及图表。Workbook 对象也提供了 Worksheets 属性和 Charts 属性,分别代表纯粹的工作表集合和图表集合。如果能确认表格的类型,那麽可以直接使用这两个属性。

为了方便应用程序开发,Application 对象也提供了 Sheets 丶 Worksheets 和 Charts 这三个属性,表示当前活动工作簿的表格集合。如果 Excel 中没有打开的工作簿,调用这些属行会发生异常。

反过来,Workbook 丶Worksheet 和 Range 对象都提供了一个 Application 属性,用于获得它们所属的应用程序对象。

建立了 Application 对象之後,必须向工作簿集合新增一个新的工作簿:


Excel.Workbook aBook1 = aExcelApp.Workbooks.Add( [Template=Type.Missing] );

Add 方法的参数可以被忽略略,表示新增一个空白的工作簿,默认有三个空白表。如果直接打开 Excel 时所看到的一样。若给定一个已存在的全路径档名,那麽将会开启该档。例如:D:\\temp\\Book1.xls。

开启已存在的档案,有时会用如下的方式,因为 Open 方法的参数除了档名之外,还有很多,如 UdateLink, ReadOnly, … 等等,各有其目的,在此就略过不谈。

Excel.Workbook aBook1 = aExcelApp.Workbooks.Open(“D:\\temp\\Book1.xls”);

打开了工作簿,接下来就是要取得工作表,取得工作表的方式有下列几种:

Excel.Worksheet aSheet1 = (Excel.Worksheet)aBook1.Sheets[1];
Excel.Worksheet aSheet1 = (Excel.Worksheet)aBook1.Sheets[“Sheet1”];
Excel.Worksheet aSheet1 = (Excel.Worksheet)m_aWB.Sheets.get_Item(1);
Excel.Worksheet aSheet1 = (Excel.Worksheet)m_aWB.Sheets.[ “Sheet1”];


而取得工作表中单元格的方式有下列几种:

Excel.Range aRange = aSheet1.get_Range(“A1”);
Excel.Range aRange = aSheet1.get_Range(“A1”, Type.Missing);
Excel.Range aRange = aSheet1.get_Range(“A1:C10”, Type.Missing);
Excel.Range aRange = aSheet1.get_Range(“A1”, "C10”); // 与上列相同
Excel.Range aRange = aSheet1.get_Range(“A:C”, Type.Missing);
Excel.Range aRange = aSheet1.get_Range(“3:5”, Type.Missing);


如果要取得的区域只有一个单元格,那麽可以使用 Worksheet 对象的 Cells 属性,例如:

Excel.Range aRange = (Range)aSheet1.Cells[Row, Col];

取得 Range 之後,就能对单元格进行读取或写入的动作了。

aRange.Value2 = "Hello!";
string buf = (string)aRange.Value2;

关毕 Excel 的方式如下:

aExcelApp.Workbooks.Close();
aExcelApp.Quit();

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值