原文来自:慧都控件网 http://www.evget.com/zh-CN/Info/catalog/18074.html
有时,需要将多个工作表合并成一个。如果单纯的手工操作,费时又费力,效果还不佳,但是使用Aspose.Cells就可以很简单的实现。本文将展示读取一个源工作簿,并将其中的工作表合并成一个的代码示例。
我们将利用复制的方法将工作簿中的多个源工作表内容复制到一个工作表中。
源工作簿
在这里我们先创建一个源工作簿,其中有三个工作表。请参见图片的所有三个工作表。
输出的工作薄
在运行下面的示例代码之后,您将得到只有一个工作表的工作簿,其中包含上面三个工作表中的所有数据,如图所示:
示例代码:
[C#]
string filePath = @"c:\source.xlsx";
Workbook workbook = new Workbook(filePath);
Workbook destWorkbook = new Workbook();
Worksheet destSheet = destWorkbook.Worksheets[0];
int TotalRowCount = 0;
for (int i = 0; i < workbook.Worksheets.Count; i++)
{
Worksheet sourceSheet = workbook.Worksheets[i];
Range sourceRange = sourceSheet.Cells.MaxDisplayRange;
Range destRange = destSheet.Cells.CreateRange(sourceRange.FirstRow + TotalRowCount, sourceRange.FirstColumn,
sourceRange.RowCount, sourceRange.ColumnCount);
destRange.Copy(sourceRange);
TotalRowCount = sourceRange.RowCount + TotalRowCount;
}
destWorkbook.Save("output.xlsx");
[VB]
Dim filePath As String = "C:\source.xlsx"
Dim workbook As Workbook = New Workbook(filePath)
Dim destWorkbook As Workbook = New Workbook()
Dim destSheet As Worksheet = destWorkbook.Worksheets(0)
Dim TotalRowCount As Integer = 0
For i = 0 To workbook.Worksheets.Count - 1
Dim sourceSheet As Worksheet = workbook.Worksheets(i)
Dim sourceRange As Range = sourceSheet.Cells.MaxDisplayRange
Dim destRange As Range = destSheet.Cells.CreateRange(sourceRange.FirstRow + TotalRowCount, sourceRange.FirstColumn, _
sourceRange.RowCount, sourceRange.ColumnCount)
destRange.Copy(sourceRange)
TotalRowCount = sourceRange.RowCount + TotalRowCount
Next
destWorkbook.Save("output.xlsx")