在处理Excel文档时,我们常常需要复制某一工作簿中的数据并粘贴到另外一个工作簿中,例如,复制指定单元格区域或者某一工作表。在这篇文章中,我将演示如何使用 Free Spire.
在处理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文件。
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 Class
End Namespace
在不同Excel工作簿之间复制工作表
- 创建Workbook类的对象
- 使用Workbook.LoadFromFile()方法,加载源Excel文档。
- 获取源Excel文档中的第一张工作表。
- 加载目标Excel示例文档。
- 使用WorksheetsCollection.AddCopy()方法,将源Excel文档中的第一个工作表复制到目标Excel文档中。
- 使用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 Class
End Namespace