在操作Excel内容时,难免会用到复制行和列等操作,复制行操作已在上一章http://www.cnblogs.com/happyfish78/archive/2013/01/15/2860587.html进行过具体描述,下面我们
看下如何进行复制列的操作,首先看下要操作的模板,如图:
一、微软Excel实现操作
如果要想将第2列中内容复制到第5列中,要如何才能实现。先看下微软Excel中是如何进行操作的:
1.首先选择要被复制的列,简单鼠标右键,选择复制选项。
2.再选择要复制的列,鼠标右键选择粘贴选项即可。
只要简单2个步骤就能实现复制列的效果,那下面我们再来看下如何用Acey.ExcelX组件如何实现,和Excel操作的效果相比是否简单、清晰呢?
二、用Acey.ExcelX组件实现
首先导入命名空间:
using Acey.ExcelX;
public void Sample() { string path = @"Files\CopyColumn.xls"; //创建工作薄通过打开。 IWorkbook workbook = ExcelxApplication.Open(path); //获取指定索引的工作表。 IWorksheet worksheet = workbook.Worksheets[0]; //获取指定列对象。 IColumn sourceColumn = worksheet.Columns["B"]; //获取指定目标列对象。 IColumn destColumn = worksheet.Columns["E"]; //复制指定源行对象。 destColumn.Copy(sourceColumn); path = @"d:\book1.xls"; workbook.SaveAs(path, FileFormat.Excel97To2003); }
运行上面代码生成Excel的效果如下:
先分析下代码的含义:
1. string path = @"Files\CopyColumn.xls"; IWorkbook workbook = ExcelxApplication.Open(path);创建工作薄对象通过打开指定文件。
2. IWorksheet worksheet = workbook.Worksheets[0]; 获取指定索引的工作表对象,这里我们获取是工作薄中第一个工作表对象。
3.IColumn sourceColumn = worksheet.Columns["B"]; 创建列对象通过列的名称,Acey.ExcelX组件接口除了支持通过列名称来获取列对象,也指定通过列索引来
获取列对象,所以上面的代码可以被写成:IColumn sourceColumn = worksheet.Columns[1];,用列名称获取列对象更清晰。
4.destColumn.Copy(sourceColumn); 将指定源列对象的内容复制到目标列对象中。Copy方法:复制内容(包含数据和样式)。IColumn对象除了指定Copy方法外还
支持CopyFormat方法,该方法只复制样式,不复制数据。
说明:样式包含边框、字体、数据类型、对齐方式、角度和列宽等因素。
三、总结
用Acey.ExcelX组件能轻松实现列复制操作。