C#/VB.NET:在不同Excel工作簿之间复制单元格区域和工作表
在处理Excel文档时,我们常常需要复制某一工作簿中的数据并粘贴到另外一个工作簿中,例如,复制指定单元格区域或者某一工作表。在这篇文章中,我将演示如何使用 Free Spire.XLS for .NET在 C# 和 VB.NET程序中复制不同Excel工作簿之间的单元格区域和工作表。
- 在不同Excel工作簿之间复制单元格区域
- 在不同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()方法,用于将数据从源单元格区域复制到目标单元格区域。目标区域可以是同一工作簿内的单元格区域,也可以是不同工作簿中的单元格区域。以下是将单元格区域从某一工作簿复制到另一个工作簿中的步骤:
- 创建 Workbook类的对象,加载源Excel文档。
- 利用 Workbook.Worksheets 属性和Worksheet.Range属性获取源工作表和源单元格区域。
- 创建另一个Workbook类的对象以加载目标Excel文档。
- 获取目标工作表和单元格区域。
- 使用 Worksheet.Copy(CellRange source, CellRange destRange)方法将数据从源单元格区域复制到目标单元格区域。
- 将源单元格区域的列宽复制到目标区域,以便数据可以在目标工作簿中正确显示。
- 使用 Workbook.SaveToFile()方法将目标工作簿保存到Excel文件。
C#
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"); } } }
VB.NET
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 Class End Namespace
在不同Excel工作簿之间复制工作表
- 创建 Workbook类的对象
- 使用 Workbook.LoadFromFile()方法,加载源Excel文档。
- 获取源Excel文档中的第一张工作表。
- 加载目标Excel示例文档。
- 使用WorksheetsCollection.AddCopy()方法,将源Excel文档中的第一个工作表复制到目标Excel文档中。
- 使用Workbook.SaveToFile()方法将更改保存到另一个文件。
C#
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"); } } }
VB.NET
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 Class End Namespace