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.要想保存在当前目录下,需要 ...
随机推荐
- 《ASP.NET Core技术内幕与项目实战》精简集-目录
本系列是杨中科2022年最新作品<ASP.NET Core技术内幕与项目实战>及B站配套视频(强插点赞)的精简集,是一个读书笔记.总结和提炼了主要知识点,遵守代码优先原则,以利于快速复习和 ...
- WPF之MVVM实践中的Command与CommandParameter
先记录一下,方便以后复习. https://www.cnblogs.com/babietongtianta/p/3474101.html
- IIS 配置集中式证书模块实现网站自动绑定证书文件
在 Windows 环境下如果采用 IIS 作为 网站服务器时,常规的网站绑定 HTTPS 需要一个一个站点手动选择对应的证书绑定,而且证书过期之后更换证书时也是需要一个个重新绑定操作,无法便捷的做到 ...
- 记录一次新节点加入K8S集群
新节点初始化 安装docker kubelet kubeadm(指定版本) #先查看当前集群docker版本 [root@lecode-k8s-master manifests]# docker ve ...
- c++题目:数迷
c++题目:数迷 题目 [题目描述] 给出含有N×N个格子的正方形表格,要求每个格子都填上一个个位数(范围1-N),使得每行.每列以及同一斜线上的数字都不同.部分格子已经填好数字.求满足题意的方案数. ...
- CodeGeeX:vscode中全新的智能代码补全插件
大家好我是费老师,代码智能补全是近几年非常热门的话题,有前不久宣告项目终结的kite,反响平平的tabnine,以及最近吃了一堆官司的copilot. 而广大从事编程工作的用户只关心市面上的代码智能补 ...
- 30位以内随机产生时间戳加随机数id
package com.zx.ps.web.gzdb; import java.text.SimpleDateFormat; import java.util.Date; public class c ...
- 2022年鲜为人知的CSS 特性了解起来~
前言 随着CSS的不断发展,一些很酷且有用的属性要么完全被忽视,要么由于某种原因不像其他常见属性那样被开发者熟练应用.这篇文章我们将一起学习那些CSS中陌生但非常有用的CSS属性,这些属性你可能听说过 ...
- 【Java SE】Day05数组
一.数组的定义和访问 1.初始化 动态new int[10];--默认值 静态new int[]{1,2,3};,省略为{1,2,3}; 2.访问 长度arr.length属性(数组的属性) 打印数组 ...
- 不用USB,通过adb无线调试安卓手机页面
以前真机调试手机页面,都是使用数据线连接手机和电脑,近日身边没有USB数据线,折腾了下如何不依赖数据线只用无线调试手机页面,教程如下. 本教程适用于安卓11以及以上版本.否则应该使用USB数据线连接. ...