Previous topicNext topic
Help > 开发指南 > Excel > API > 示例 > Worksheet >
如何:复制工作表

使用 Worksheet.CopyFrom 方法将数据从一个工作表复制到另一个工作表。

复制工作簿中的工作表

Vb.Net
'创建一个Workbook工作簿对象.
Using workbook As New DevExpress.Spreadsheet.Workbook()
    '将新工作表添加到工作簿中。
    workbook.Worksheets.Add("Sheet1_Copy")

    '将“Sheet1”中的所有信息复制到新创建的工作表中。
    workbook.Worksheets("Sheet1_Copy").CopyFrom(workbook.Worksheets("Sheet1"))
End Using

C#
// 创建一个Workbook工作簿对象.
using (DevExpress.Spreadsheet.Workbook workbook = new DevExpress.Spreadsheet.Workbook())
{
    // 将新工作表添加到工作簿中。
    workbook.Worksheets.Add("Sheet1_Copy");

    // 将“Sheet1”中的所有信息复制到新创建的工作表中。
    workbook.Worksheets["Sheet1_Copy"].CopyFrom(workbook.Worksheets["Sheet1"]);
}

在工作簿之间复制工作表

Vb.Net
Using sourceWorkbook As New DevExpress.Spreadsheet.Workbook()
    Using targetWorkbook As New DevExpress.Spreadsheet.Workbook()
        ' 将数据添加到源工作簿的第一个工作表中。
        sourceWorkbook.Worksheets(0).Cells("A1").Value = "A worksheet to copy"
        sourceWorkbook.Worksheets(0).Cells("A1").Font.Color = Color.ForestGreen

        '将源工作簿的第一个工作表复制到目标工作簿。
        targetWorkbook.Worksheets(0).CopyFrom(sourceWorkbook.Worksheets(0))
    End Using
End Using

C#
using (DevExpress.Spreadsheet.Workbook sourceWorkbook = new DevExpress.Spreadsheet.Workbook())
{
    using (DevExpress.Spreadsheet.Workbook targetWorkbook = new DevExpress.Spreadsheet.Workbook())
    {
        // 将数据添加到源工作簿的第一个工作表中。
        sourceWorkbook.Worksheets[0].Cells["A1"].Value = "A worksheet to copy";
        sourceWorkbook.Worksheets[0].Cells["A1"].Font.Color = Color.ForestGreen;

        // 将源工作簿的第一个工作表复制到目标工作簿。
        targetWorkbook.Worksheets[0].CopyFrom(sourceWorkbook.Worksheets[0]);
    }
}

指定复制选项

将 WorksheetCopyOptions 实例传递给 Worksheet.CopyFrom 方法以指定复制选项。可以使用以下选项:

选项 描述
PasteOptions 指定要从复制的工作表粘贴到目标工作表中的数据部分。
InvalidFormulaReplacementMode 指定如果复制的公式包含对目标工作簿中不存在的工作表的引用,则如何替换这些公式。
SheetMappings 允许您指定源工作簿和目标工作簿中的工作表名称之间的映射。使用此属性可将公式中的外部单元格引用替换为对目标工作簿中工作表的引用。
OverwriteProtectionOnLockedWorksheet 指定是否将源工作表的单元格保护选项应用于受保护目标工作表中的单元格。

下面的示例演示如何将所有工作表从一个工作簿复制到另一个工作簿。工作表将以其原始名称进行复制。SheetMappings 属性用于更新公式引用,以便它们指向目标工作簿中的工作表。

Vb.Net
Using sourceWorkbook As New DevExpress.Spreadsheet.Workbook()
    Using targetWorkbook As New DevExpress.Spreadsheet.Workbook()
        '加载数据
        targetWorkbook.LoadDocument("D:\Book1.xlsx")
        sourceWorkbook.LoadDocument("D:\Book2.xlsx")
        Dim copyOptions As New DevExpress.Spreadsheet.WorksheetCopyOptions()
        '指定源工作簿和目标工作簿中工作表之间的映射。SheetMappings将使用其原始名称进行复制。
        copyOptions.SheetMappings = sourceWorkbook.Sheets.ToDictionary(Function(sheet) sheet.Name, Function(sheet) sheet.Name)
        '将所有工作表从源工作簿复制到目标工作簿。
        For Each sheet In sourceWorkbook.Worksheets
            Dim sheetName As String = sheet.Name
            If Not targetWorkbook.Worksheets.Contains(sheetName) Then
                targetWorkbook.Worksheets.Add(sheetName)
            End If
            targetWorkbook.Worksheets(sheetName).CopyFrom(sheet, copyOptions)
        Next
        '重新计算工作簿中的所有公式
        targetWorkbook.Calculate()
        targetWorkbook.SaveDocument("D:\MergedDocument.xlsx")
    End Using
End Using

C#
using (DevExpress.Spreadsheet.Workbook sourceWorkbook = new DevExpress.Spreadsheet.Workbook())
{
    using (DevExpress.Spreadsheet.Workbook targetWorkbook = new DevExpress.Spreadsheet.Workbook())
    {
        // 加载数据
        targetWorkbook.LoadDocument(@"D:\Book1.xlsx");
        sourceWorkbook.LoadDocument(@"D:\Book2.xlsx");
        DevExpress.Spreadsheet.WorksheetCopyOptions copyOptions = new DevExpress.Spreadsheet.WorksheetCopyOptions();
        // 指定源工作簿和目标工作簿中工作表之间的映射。SheetMappings将使用其原始名称进行复制。
        copyOptions.SheetMappings = sourceWorkbook.Sheets.ToDictionary(sheet => sheet.Name, sheet => sheet.Name);
        // 将所有工作表从源工作簿复制到目标工作簿。
        foreach (var sheet in sourceWorkbook.Worksheets)
        {
            string sheetName = sheet.Name;
            if (!targetWorkbook.Worksheets.Contains(sheetName))
                targetWorkbook.Worksheets.Add(sheetName);
            targetWorkbook.Worksheets[sheetName].CopyFrom(sheet, copyOptions);
        }
        // 重新计算工作簿中的所有公式
        targetWorkbook.Calculate();
        targetWorkbook.SaveDocument(@"D:\MergedDocument.xlsx");
    }
}