在日常操作 Excel 文档时,复制行、列和单元格是非常常见的需求。无论是整理数据、创建模板还是生成报表,复制操作都能大大提高工作效率。然而,复制不仅仅是将数据从一个位置拷贝到另一个位置,通常还涉及如何准确保留原始单元格的格式、公式、样式以及其他相关属性。这篇文章将介绍如何使用 Spire.XLS for .NET 和 C# 在 Excel 中复制行、列和单元格并保留格式。
安装 Spire.XLS for .NET
首先,您需要将 Spire.XLS for .NET 包含的 DLL 文件作为引用添加到您的 .NET 项目中。DLL 文件可以从此链接下载,也可以通过 NuGet 安装。
PM> Install-Package Spire.XLSC# 在 Excel 中复制行
要在 Excel 中复制行并保留格式,你可以使用 Worksheet.CopyRow(CellRange sourceRow, Worksheet destSheet, int destRowIndex, CopyRangeOptions copyOptions) 方法。通过 CopyRangeOptions 参数,你可以灵活设置复制选项,例如:复制所有格式、复制条件格式、复制数据验证,或者仅复制公式的结果值等等。具体步骤如下:
- 创建 Workbook 类的对象。
- 使用 Workbook.LoadFromFile() 方法加载 Excel 文件。
- 使用 Workbook.Worksheets[index] 属性获取源工作表和目标工作表。
- 使用 Worksheet.Rows[index] 属性获取要复制的行。
- 使用 Worksheet.CopyRow(sourceRow, destSheet, destRowIndex, copyOptions) 方法从源工作表复制该行及其格式到目标工作表。
- 将源行中单元格的列宽复制到目标行中相应的单元格。
- 使用 Workbook.SaveToFile() 方法保存工作簿到文件。
- C#
using Spire.Xls;
namespace CopyRows
{
    internal class Program
    {
        static void Main(string[] args)
        {
            // 创建 Workbook 对象
            Workbook workbook = new Workbook();
            // 加载 Excel 文件
            workbook.LoadFromFile("示例.xlsx");
            // 获取源工作表
            Worksheet sheet1 = workbook.Worksheets[0];
            // 获取目标工作表
            Worksheet sheet2 = workbook.Worksheets[1];
            // 获取要复制的行
            CellRange row = sheet1.Rows[0];
            // 将源工作表的行复制到目标工作表的第一行
            sheet1.CopyRow(row, sheet2, 1, CopyRangeOptions.All);
            int columns = sheet1.Columns.Length;
            // 将源行的列宽复制到目标行的相应单元格
            for (int i = 0; i < columns; i++)
            {
                double columnWidth = row.Columns[i].ColumnWidth;
                sheet2.Rows[0].Columns[i].ColumnWidth = columnWidth;
            }
            // 保存修改后的工作簿
            workbook.SaveToFile("复制行.xlsx", ExcelVersion.Version2016);
            workbook.Dispose();
        }
    }
}
C# 在 Excel 中复制列
同样地,要在 Excel 工作表中复制列并保留格式,你可以使用 Worksheet.CopyColumn(CellRange sourceColumn, Worksheet destSheet, int destColIndex, CopyRangeOptions copyOptions) 方法。具体步骤如下:
- 创建 Workbook 类的对象。
- 使用 Workbook.LoadFromFile() 方法加载 Excel 文件。
- 使用 Workbook.Worksheets[index] 属性获取源工作表和目标工作表。
- 使用 Worksheet.Columns[index] 属性获取要复制的列。
- 使用 Worksheet.CopyColumn(CellRange sourceColumn, Worksheet destSheet, int destColIndex, CopyRangeOptions copyOptions) 方法从源工作表复制该列及其格式到目标工作表。
- 将源列中单元格的行高复制到目标列中相应的单元格。
- 使用 Workbook.SaveToFile() 方法保存工作簿到文件。
- C#
using Spire.Xls;
namespace CopyColumns
{
    internal class Program
    {
        static void Main(string[] args)
        {
            // 创建 Workbook 对象
            Workbook workbook = new Workbook();
            // 加载 Excel 文件
            workbook.LoadFromFile("示例.xlsx");
            // 获取源工作表
            Worksheet sheet1 = workbook.Worksheets[0];
            // 获取目标工作表
            Worksheet sheet2 = workbook.Worksheets[1];
            // 获取要复制的列
            CellRange column = sheet1.Columns[0];
            // 将源工作表的列复制到目标工作表的第一列
            sheet1.CopyColumn(column, sheet2, 1, CopyRangeOptions.All);
            int rows = column.Rows.Length;
            // 将源列的行高复制到目标列的相应单元格
            for (int i = 0; i < rows; i++)
            {
                double rowHeight = column.Rows[i].RowHeight;
                sheet2.Columns[0].Rows[i].RowHeight = rowHeight;
            }
            // 保存修改后的工作簿
            workbook.SaveToFile("复制列.xlsx", ExcelVersion.Version2016);
            workbook.Dispose();
        }
    }
}
C# 在 Excel 中复制单元格
除了复制行和列以外,Spire.XLS for .NET 还提供了 CellRange.Copy(CellRange destRange, CopyRangeOptions copyOptions) 方法,支持复制特定单元格或单元格区域。具体步骤如下:
- 创建 Workbook 类的对象。
- 使用 Workbook.LoadFromFile() 方法加载 Excel 文件。
- 使用 Workbook.Worksheets[index] 属性获取源工作表和目标工作表。
- 使用 Worksheet.Range[] 属性获取源单元格区域和目标单元格区域。
- 使用 CellRange.Copy(CellRange destRange, CopyRangeOptions copyOptions) 方法从源工作表复制源单元格区域及其格式到目标工作表的目标单元格区域。
- 将源单元格区域的行高和列宽复制到目标单元格区域。
- 使用 Workbook.SaveToFile() 方法保存工作簿到文件。
- C#
using Spire.Xls;
namespace CopyCells
{
    internal class Program
    {
        static void Main(string[] args)
        {
            // 创建 Workbook 对象
            Workbook workbook = new Workbook();
            // 加载 Excel 文件
            workbook.LoadFromFile("示例.xlsx");
            // 获取源工作表
            Worksheet sheet1 = workbook.Worksheets[0];
            // 获取目标工作表
            Worksheet sheet2 = workbook.Worksheets[1];
            // 获取源单元格区域
            CellRange range1 = sheet1.Range["A1:E7"];
            // 获取目标单元格区域
            CellRange range2 = sheet2.Range["A1:E7"];
            // 将源单元格区域复制到目标单元格区域
            range1.Copy(range2, CopyRangeOptions.All);
            // 将源单元格区域的行高和列宽复制到目标单元格区域
            for (int i = 0; i < range1.Rows.Length; i++)
            {
                CellRange row = range1.Rows[i];
                for (int j = 0; j < row.Columns.Length; j++)
                {
                    CellRange column = row.Columns[j];
                    range2.Rows[i].Columns[j].ColumnWidth = column.ColumnWidth;
                    range2.Rows[i].RowHeight = row.RowHeight;
                }
            }
            // 保存修改后的工作簿
            workbook.SaveToFile("复制单元格.xlsx", ExcelVersion.Version2016);
            workbook.Dispose();
        }
    }
}
申请临时 License
如果您希望删除结果文档中的评估消息,或者摆脱功能限制,请该Email地址已收到反垃圾邮件插件保护。要显示它您需要在浏览器中启用JavaScript。获取有效期 30 天的临时许可证。
 



 
					



