C#/VB.NET 如何在不同工作簿之间复制单元格范围
在处理 Excel 文档时,我们经常需要将数据整合到一个工作表以便于我们进行管理或数据对比。为了提高工作效率,我们可以在不同的工作簿之间复制选定的单元格区域或整个工作表。本文将演示如何通过编程方式将选定的单元格区域从一个工作簿复制到另一个工作簿。
程序环境:
本次测试时,在程序中引入 Spire.XLS.dll 文件。
方法1:
将Free Spire.XLS for .NET 下载到本地,解压,找到 BIN 文件夹下的 Spire.XLS.dll。然后在 Visual Studio 中打开“解决方案资源管理器”,鼠标右键点击“引用”,“添加引用”,将本地路径 BIN 文件夹下的 dll 文件添加引用至程序。
方法2::
通过NuGet安装。可通过以下 2 种方法安装:
1. 可以在 Visual Studio 中打开“解决方案资源管理器”,鼠标右键点击“引用”,“管理 NuGet 包”,然后搜索“Free Spire.XLS”,点击“安装”。等待程序安装完成。
2. 将以下内容复制到 PM 控制台安装。
Install-Package FreeSpire.XLS -Version 12.7
不同工作簿之间复制单元格范围
- 创建一个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(); //加载源 Excel 文档
sourceBook.LoadFromFile("营业状况表.xlsx"); //获取源工作表
Worksheet sourceSheet = sourceBook.Worksheets[0]; //获取源单元格区域
CellRange sourceRange = sourceSheet.Range["A1:G5"]; //创建另一个Workbook对象
Workbook destBook = new Workbook(); //加载目标工作簿
destBook.LoadFromFile("目标文档.xlsx"); //获取目标工作表
Worksheet destSheet = destBook.Worksheets[0]; //获取单元格区域
CellRange destRange = destSheet.Range["B2:H6"]; //将数据从源范围复制到目标范围
sourceSheet.Copy(sourceRange, destRange); //循环遍历源范围中的列
for (int i = 0; i < sourceRange.Columns.Length; i++)
{
//将列宽也从源范围复制到目标范围
destRange.Columns[i].ColumnWidth = sourceRange.Columns[i].ColumnWidth;
} //将目标工作簿保存到 Excel 文件
destBook.SaveToFile("复制单元格范围.xlsx");
}
}
}
VB.NET
Imports Spire.Xls Namespace CopyCellRange
Friend Class Program
Private Shared Sub Main(ByVal args As String())
'创建一个Workbook对象
Dim sourceBook As Workbook = New Workbook() '加载源 Excel 文档
sourceBook.LoadFromFile("营业状况表.xlsx") '获取源工作表
Dim sourceSheet As Worksheet = sourceBook.Worksheets(0) '获取源单元格区域
Dim sourceRange As CellRange = sourceSheet.Range("A1:G5") '创建另一个Workbook对象
Dim destBook As Workbook = New Workbook() '加载目标工作簿
destBook.LoadFromFile("目标文档.xlsx") '获取目标工作表
Dim destSheet As Worksheet = destBook.Worksheets(0) '获取单元格区域
Dim destRange As CellRange = destSheet.Range("B2:H6") '将数据从源范围复制到目标范围
sourceSheet.Copy(sourceRange, destRange) '循环遍历源范围中的列
For i As Integer = 0 To sourceRange.Columns.Length - 1
'将列宽也从源范围复制到目标范围
destRange.Columns(i).ColumnWidth = sourceRange.Columns(i).ColumnWidth
Next '将目标工作簿保存到 Excel 文件
destBook.SaveToFile("复制单元格范围.xlsx")
End Sub
End Class
End Namespace
效果图

—本文完—
C#/VB.NET 如何在不同工作簿之间复制单元格范围的更多相关文章
- Excel不同工作簿之间提取信息
Sub 不同工作簿间提取信息() '用于单个字段信息的提取: Dim w As Workbook, wb1 As Workbook, wb2 As Workbook, wb3 As Workbook ...
- 如何使用 Visual C# 2005 或 Visual C# .NET 向 Excel 工作簿传输数据
本文分步介绍了多种从 Microsoft Visual C# 2005 或 Microsoft Visual C# .NET 程序向 Microsoft Excel 2002 传输数据的方法.本文还提 ...
- excel-合并多个Excel文件--VBA合并当前目录下所有Excel工作簿中的所有工作表
在网上找EXCEL多文件合并的方法,思路: 一.Linux 或者window+cmder,直接用命令行cat合并EXCEL文件,但是,需要安装辅助东西才能直接处理(也许也不可以,但是,可以用文件格式转 ...
- Excel2007VBA数组和工作表及单元格的引用
动态数组使用: https://zhidao.baidu.com/question/1432222709706721499.html 使用Redim动态数组即可. 1 2 3 4 5 6 7 8 Su ...
- 在Excel工作表单元格中引用当前工作表名称
在Excel工作表单元格中引用当前工作表名称 有多份Excel表格表头标题都为"××学校第1次拉练考试××班成绩表",由于工作表结构都是一样的,所以我每次都是复制工作表然后编辑修改 ...
- VBA【遍历每个工作表并将工作表表名赋予B2单元格】
方法一: 存在缺陷:选中所有单元格,批量生成公式时候,每次需要点击进入工作表点击单元格--进入编辑状态,然后公式才会生效 使用公式如下: =,) 附件下载地址:点击下载 方法二: 使用宏编程进行复制 ...
- 把Excel工作簿的每个工作表提取出来保存为新工作簿
平台:MS office 2010 任务:有个excel工作簿,其中有上百个工作表,要求把每一个工作表全部保存为新工作簿,如果一个一个复制出来太傻了,可以用excel自带的VB解决. 方法:打开工作簿 ...
- Excel VBA 从一个工作簿查找另一个一个工作簿中的一些内容复制到另外一个工作簿
帮朋友来写个Excel VBA 以前写过ASP,所以对vb略微熟悉,但VBA 没有仔细研究过. 以前只研究过 vba 写一个 计算个人所得税的程序. 这次写的功能也算是简单,但也耗费了两天的功夫. 需 ...
- 使用SPIRE.XLS来创建Excel 工作簿
使用SPIRE.XLS来创建Excel 工作簿 概要 最近在研究 .NET 控件,使用这些控件在程序中可以快速低成本实现功能. 在这一篇中我们使用的控件是Spire.XL ...
- 在VBA中新建工作簿
用程序计算数据,得到不同公司.不同项目的数据结果,最终还要将每个公司的数据结果放在各自的单独文件中.这就需要在vba中新建.保存excel文件.掌握几个东西就能很熟练了:1.要想保存在当前目录下,需要 ...
随机推荐
- 洛谷 P3201 梦幻布丁 题解
(这篇题解可能没什么营养,主要是记录一下我用map乱搞启发式合并的神奇做法) 首先我们知道,我们肯定要用一堆集合维护每一种数当前的位置,并支持合并和数连续出现的段数两种操作 我发现这个东西并不好搞,但 ...
- 【题解】CF356A Knight Tournament
题面传送门 本蒟蒻想练习一下并查集,所以是找并查集标签来这里的.写题解加深理解. 解决思路 自然,看到区间修改之类很容易想到线段树,但本蒟蒻线段树会写挂,所以这里就讲比较简单的并查集思路. 并查集的核 ...
- Day11.2:标签的使用
标签的使用 当我们在嵌套语句中,例如当我们在for的嵌套循环语句中,想要终止或重新开始当前循环以外的循环的时候,单独仅靠break和continue和还不够,需要在我们想要作用的循环语句处加上一个标签 ...
- K8S节点配置资源驱逐
#参考文章:https://www.cnblogs.com/zhangrui153169/p/15726165.html 当节点内存到达多少时.对节点的pod进行驱逐 [root@lecode-tes ...
- 聊聊Go里面的闭包
以前写 Java 的时候,听到前端同学谈论闭包,觉得甚是新奇,后面自己写了一小段时间 JS,虽只学到皮毛,也大概了解到闭包的概念,现在工作常用语言是 Go,很多优雅的代码中总是有闭包的身影,看来不了解 ...
- 【Devexpres】spreadsheetControl自动列宽
Worksheet worksheet = this.spreadsheetControl1.ActiveWorksheet; worksheet.Import(datatable, true, 0, ...
- DLR 的扩展库 Dynamitey
.NET 在 CLR 对动态语言或者脚本语言的支持是通过DLR 完成的, Miguel de Icaza对 DLR 的特点概括如下: 一个针对动态语言的共享式类型系统: 一个共享的 AST,可以被语言 ...
- jquery &&、||
$(function(){ $('.mainall').textbox({}); var r = 5; r=r==2&&r*8||r*3; alert(r); }); &&am ...
- node学习01
1.前言 Node.js 是一个开源和跨平台的 JavaScript 运行时环境 Node.js 在浏览器之外运行 V8 JavaScript 引擎(Google Chrome 的内核). 这使得 N ...
- linux全新机器环境搭建流程梳理
软件解压后安装基础指令(复制用):./configure && make && make install ./configure --prefix=/usr/local ...