C#/VB.NET:在不同Excel工作簿之间复制单元格区域和工作表

在处理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文件。

 

C#

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");
        }
    }
}

VB.NET

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()方法将更改保存到另一个文件。

C#

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");
        }
    }
}

VB.NET

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

posted @ 2022-08-12 16:00  Gia-  阅读(1181)  评论(0编辑  收藏  举报