在工作中,我们经常会不得不同时打开多个 Excel 文件,这可能会使我们感到眼花缭乱。合并相同类型或类别的 Excel 文件可以避免许多麻烦并节省时间,提高我们的工作效率。本文将演示如何使用 Spire.XLS for .NET 在 C# 和 VB.NET 中将多个 Excel 文档合并为一个 Excel 文件。
安装 Spire.XLS for .NET
首先,您需要添加 Spire.XLS for .NET 包中包含的 DLL 文件作为 .NET 项目中的引用。DLL 文件可以从此链接下载或通过 NuGet 安装。
PM> Install-Package Spire.XLS
将多个 Excel 工作簿合并到一个 Excel 文档
为了方便数据的编辑和查询,我们可以将多个工作簿合并到一个 Excel 文档进行管理,详细步骤如下:
- 从 Excel 文件路径创建一个字符串数组。
- 初始化一个 Workbook 对象以创建一个新的 Excel 工作簿,并使用 Workbook.Worksheets.Clear() 方法清除工作簿中的默认工作表。
- 初始化另一个临时 Workbook 对象。
- 循环遍历字符串数组,使用 Workbook.LoadFromFile() 方法将当前工作簿加载到临时 Workbook 对象中。
- 循环遍历当前工作簿中的工作表,然后使用 Workbook.Worksheets.AddCopy() 方法将当前工作簿中的每个工作表复制到新工作簿中。
- 使用 Workbook.SaveToFile() 方法将新工作簿保存到文件。
- C#
- VB.NET
using Spire.Xls;
namespace MergeExcelFiles
{
class Program
{
static void Main(string[] args)
{
//从 Excel 文件路径创建一个字符串数组
string[] inputFiles = new string[] { "羊毛毯.xlsx", "羊绒被.xlsx", "空调被.xlsx" };
//初始化一个新的 Workbook 对象
Workbook newWorkbook = new Workbook();
//清除默认工作表
newWorkbook.Worksheets.Clear();
//初始化另一个临时 Workbook 对象
Workbook tempWorkbook = new Workbook();
//循环遍历字符串数组
foreach (string file in inputFiles)
{
//加载当前工作簿
tempWorkbook.LoadFromFile(file);
//循环遍历当前工作簿中的工作表
foreach (Worksheet sheet in tempWorkbook.Worksheets)
{
//将当前工作簿中的每个工作表复制到新工作簿中
newWorkbook.Worksheets.AddCopy(sheet, WorksheetCopyType.CopyAll);
}
}
//将新工作簿保存到文件
newWorkbook.SaveToFile("合并工作簿.xlsx", ExcelVersion.Version2013);
}
}
}
Imports Spire.Xls
Namespace MergeExcelFiles
Friend Class Program
Private Shared Sub Main(ByVal args As String())
'从 Excel 文件路径创建一个字符串数组
Dim inputFiles = New String() {"羊毛毯.xlsx", "羊绒被.xlsx", "空调被.xlsx"}
'初始化一个新的 Workbook 对象
Dim newWorkbook As Workbook = New Workbook()
'清除默认工作表
newWorkbook.Worksheets.Clear()
'初始化另一个临时 Workbook 对象
Dim tempWorkbook As Workbook = New Workbook()
'循环遍历字符串数组
For Each file In inputFiles
'加载当前工作簿
tempWorkbook.LoadFromFile(file)
'循环遍历当前工作簿中的工作表
For Each sheet As Worksheet In tempWorkbook.Worksheets
'将当前工作簿中的每个工作表复制到新工作簿中
newWorkbook.Worksheets.AddCopy(sheet, WorksheetCopyType.CopyAll)
Next
Next
'将新工作簿保存到文件
newWorkbook.SaveToFile("合并工作簿.xlsx", ExcelVersion.Version2013)
End Sub
End Class
End Namespace
将多个 Excel 工作表合并为一张工作表
我们可以将相同或不同工作簿中的多个工作表合并为一个工作表。以下步骤将显示如何将同一工作簿中的两个 Excel 工作表合并为一个工作表:
- 使用 Workbook.LoadFromFile() 方法初始化 Workbook 对象并加载 Excel 文件。
- 使用 Workbook.Worksheets[sheetIndex] 属性获取需要合并的两个工作表。请注意,工作表索引是从零开始的。
- 使用 Worksheet.AllocatedRange 属性获取第二个工作表的使用范围。
- 使用 Worksheet.Range[rowIndex, columnIndex] 属性在第一个工作表中指定目标范围。请注意,行和列的索引是从 1 开始的。
- 使用 CellRange.Copy(destRange) 方法将第二个工作表的使用范围复制到第一个工作表中的目标范围。
- 使用 XlsWorksheet.Remove() 方法删除第二个工作表。
- 使用 Workbook.SaveToFile() 方法保存结果文件。
- C#
- VB.NET
using Spire.Xls;
namespace MergeExcelWorksheets
{
class Program
{
static void Main(string[] args)
{
//创建一个 Workbook 对象
Workbook workbook = new Workbook();
//Load an Excel file
workbook.LoadFromFile("示例文档.xlsx");
//获取第一个工作表
Worksheet sheet1 = workbook.Worksheets[0];
//获取第二个工作表
Worksheet sheet2 = workbook.Worksheets[1];
//获取第二个工作表的使用范围
CellRange sourceRange = sheet2.AllocatedRange;
//在第一个工作表中指定目标范围
CellRange destRange = sheet1.Range[sheet1.LastRow + 1, 1];
//将第二个工作表的使用范围复制到第一个工作表中的目标范围
sourceRange.Copy(destRange);
//删除第二个工作表
sheet2.Remove();
//保存结果文件
workbook.SaveToFile("合并工作表.xlsx", ExcelVersion.Version2013);
}
}
}
Imports Spire.Xls
Namespace MergeExcelWorksheets
Friend Class Program
Private Shared Sub Main(ByVal args As String())
'创建一个 Workbook 对象
Dim workbook As Workbook = New Workbook()
'Load an Excel file
workbook.LoadFromFile("示例文档.xlsx")
'获取第一个工作表
Dim sheet1 As Worksheet = workbook.Worksheets(0)
'获取第二个工作表
Dim sheet2 As Worksheet = workbook.Worksheets(1)
'获取第二个工作表的使用范围
Dim sourceRange As CellRange = sheet2.AllocatedRange
'在第一个工作表中指定目标范围
Dim destRange As CellRange = sheet1.Range(sheet1.LastRow + 1, 1)
'将第二个工作表的使用范围复制到第一个工作表中的目标范围
sourceRange.Copy(destRange)
'删除第二个工作表
sheet2.Remove()
'保存结果文件
workbook.SaveToFile("合并工作表.xlsx", ExcelVersion.Version2013)
End Sub
End Class
End Namespace
申请临时 License
如果您希望删除结果文档中的评估消息,或者摆脱功能限制,请该Email地址已收到反垃圾邮件插件保护。要显示它您需要在浏览器中启用JavaScript。获取有效期 30 天的临时许可证。