在处理 Excel 文档时,我们常常需要复制某一工作簿中的数据并粘贴到另外一个工作簿中,例如,复制指定单元格区域或者某一工作表。在这篇文章中,我将演示如何使用 Free Spire.XLS for .NET在 C# 和 VB.NET 程序中复制不同 Excel 工作簿之间的单元格区域和工作表。
l 在不同Excel工作簿之间复制单元格区域
l 在不同Excel工作簿之间复制工作表
安装 Free Spire.XLS for .NET
方法一:
通过NuGet安装 Free Spire.XLS for .NET,具体步骤为:依次选择工具>NuGet 包管理器>程序包管理器控制台,然后执行以下命令:
PM> Install-Package FreeSpire.XLS
方法二:
在程序中手动引入 Spire.xls.dll 文件,将Free Spire.XLS for .NET 下载到本地,解压并安装。安装完成后,打开 Visual Studio 创建新项目,在右边的“解决方案资源管理器”中右键点击“引用”,再依次选择“添加引用”> “浏览”,找到安装路径下 BIN 文件夹中的 dll 文件,点击“确定”,将其添加引用至程序中。
在不同 Excel 工作簿之间复制单元格区域
Free Spire.XLS for .NET 提供了 Worksheet.Copy()方法,用于将数据从源单元格区域复制到目标单元格区域。目标区域可以是同一工作簿内的单元格区域,也可以是不同工作簿中的单元格区域。以下是将单元格区域从某一工作簿复制到另一个工作簿中的步骤:
l 创建 Workbook 类的对象,加载源 Excel 文档。
l 利用 Workbook.Worksheets 属性和 Worksheet.Range 属性获取源工作表和源单元格区域。
l 创建另一个 Workbook 类的对象以加载目标 Excel 文档。
l 获取目标工作表和单元格区域。
l 使用 Worksheet.Copy(CellRange source, CellRange destRange)方法将数据从源单元格区域复制到目标单元格区域。
l 将源单元格区域的列宽复制到目标区域,以便数据可以在目标工作簿中正确显示。
l 使用 Workbook.SaveToFile()方法将目标工作簿保存到 Excel 文件。
using Spire.Xls; namespace CopyCellRange{ class Program { static void Main(string[] args) { //创建Workbook类的对象 Workbook sourceBook = new Workbook(); //加载源工作簿 sourceBook.LoadFromFile(@"source.xlsx"); //获取源工作表 Worksheet sourceSheet = sourceBook.Worksheets[0]; //获取源单元格区域 CellRange sourceRange = sourceSheet.Range["A1:E6"]; //创建另一个Workbook类的对象 Workbook destBook = new Workbook(); //加载目标工作簿 destBook.LoadFromFile(@"destination.xlsx"); //获取目标工作表 Worksheet destSheet = destBook.Worksheets[0]; //获取目标单元格区域 CellRange destRange = destSheet.Range["B2:F7"]; //将数据从源单元格区域复制到目标单元格区域 sourceSheet.Copy(sourceRange, destRange, true); //遍历源单元格区域内的列 for (int i = 0; i < sourceRange.Columns.Length; i++) { //将源单元格区域的列宽复制到目标单元格区域 destRange.Columns[i].ColumnWidth = sourceRange.Columns[i].ColumnWidth; } //将目标工作簿保存到Excel文件 destBook.SaveToFile("CopyRange.xlsx"); } }}
复制代码
Imports Spire.Xls Namespace CopyCellRange Class Program Shared Sub Main(ByVal args() As String) '创建Workbook类的对象 Dim sourceBook As Workbook = New Workbook() '加载源工作簿 sourceBook.LoadFromFile("source.xlsx") '获取源工作表 Dim sourceSheet As Worksheet = sourceBook.Worksheets(0) '获取源单元格区域 Dim sourceRange As CellRange = sourceSheet.Range("A1:E6") '创建另一个Workbook类的对象 Dim destBook As Workbook = New Workbook() '加载目标工作簿 destBook.LoadFromFile("destination.xlsx") '获取目标工作表 Dim destSheet As Worksheet = destBook.Worksheets(0) '获取目标单元格区域 Dim destRange As CellRange = destSheet.Range("B2:F7") '将数据从源单元格区域复制到目标单元格区域 sourceSheet.Copy(sourceRange, destRange, True) '遍历源单元格区域内的列 Dim i As Integer For i = 0 To sourceRange.Columns.Length- 1 Step i + 1 '将源单元格区域的列宽复制到目标单元格区域 destRange.Columns(i).ColumnWidth = sourceRange.Columns(i).ColumnWidth Next '将目标工作簿保存到Excel文件 destBook.SaveToFile("CopyRange.xlsx") End Sub End ClassEnd Namespace
复制代码
在不同 Excel 工作簿之间复制工作表
l 创建 Workbook 类的对象
l 使用 Workbook.LoadFromFile()方法,加载源 Excel 文档。
l 获取源 Excel 文档中的第一张工作表。
l 加载目标 Excel 示例文档。
l 使用 WorksheetsCollection.AddCopy()方法,将源 Excel 文档中的第一个工作表复制到目标 Excel 文档中。
l 使用 Workbook.SaveToFile()方法将更改保存到另一个文件。
using Spire.Xls;
namespace CopyExcelworksheet{ class Program { static void Main(string[] args) { //加载源Excel文件 Workbook workbook1 = new Workbook(); workbook1.LoadFromFile("Sample1.xlsx"); //获取第一个工作表 Worksheet sheet1 = workbook1.Worksheets[0]; //加载目标Excel文件 Workbook workbook2 = new Workbook(); workbook2.LoadFromFile("Sample2.xlsx"); //将源Excel文件的第一个工作表复制到目标Excel文件 Worksheet sheet2 = workbook2.Worksheets.AddCopy(sheet1); sheet2.Name = "Copy"; //保存文件 workbook2.SaveToFile("Copyworksheet.xlsx"); } }}
复制代码
Imports Spire.Xls
Namespace CopyExcelworksheet Friend Class Program Private Shared Sub Main(ByVal args As String()) '加载源Excel文件 Dim workbook1 As Workbook = New Workbook() workbook1.LoadFromFile("Sample1.xlsx") '获取第一个工作表 Dim sheet1 As Worksheet = workbook1.Worksheets(0) '加载目标Excel文件 Dim workbook2 As Workbook = New Workbook() workbook2.LoadFromFile("Sample2.xlsx") '将源Excel文件的第一个工作表复制到目标Excel文件 Dim sheet2 As Worksheet = workbook2.Worksheets.AddCopy(sheet1) sheet2.Name = "Copy" '保存文件 workbook2.SaveToFile("Copyworksheet.xlsx") End Sub End ClassEnd Namespace
复制代码
评论