写点什么

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

作者:Geek_249eec
  • 2022 年 8 月 12 日
    四川
  • 本文字数:3087 字

    阅读完需:约 10 分钟

在处理 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()方法,用于将数据从源单元格区域复制到目标单元格区域。目标区域可以是同一工作簿内的单元格区域,也可以是不同工作簿中的单元格区域。以下是将单元格区域从某一工作簿复制到另一个工作簿中的步骤:

 

l  创建 Workbook 类的对象,加载源 Excel 文档。

l  利用 Workbook.Worksheets 属性和 Worksheet.Range 属性获取源工作表和源单元格区域。

l  创建另一个 Workbook 类的对象以加载目标 Excel 文档。

l  获取目标工作表和单元格区域。

l  使用 Worksheet.Copy(CellRange source, CellRange destRange)方法将数据从源单元格区域复制到目标单元格区域。

l  将源单元格区域的列宽复制到目标区域,以便数据可以在目标工作簿中正确显示。

l  使用 Workbook.SaveToFile()方法将目标工作簿保存到 Excel 文件。


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");        }    }}
复制代码


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 ClassEnd Namespace
复制代码


在不同 Excel 工作簿之间复制工作表

l  创建 Workbook 类的对象

l  使用 Workbook.LoadFromFile()方法,加载源 Excel 文档。

l  获取源 Excel 文档中的第一张工作表。

l  加载目标 Excel 示例文档。

l  使用 WorksheetsCollection.AddCopy()方法将源 Excel 文档中的第一个工作表复制到目标 Excel 文档中。

l  使用 Workbook.SaveToFile()方法将更改保存到另一个文件。


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"); } }}
复制代码


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 ClassEnd Namespace
复制代码



用户头像

Geek_249eec

关注

还未添加个人签名 2022.07.13 加入

还未添加个人简介

评论

发布
暂无评论
C#/VB.NET:在不同Excel工作簿之间复制单元格区域和工作表_C#_Geek_249eec_InfoQ写作社区