首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何在c#中从一个SpreadsheetDocument获取工作表并将其添加到另一个

在C#中处理Excel文件,通常会使用OpenXML SDK,这是一个用于处理Office Open XML格式文件的库。SpreadsheetDocument类是这个SDK的一部分,它允许你读取和写入.xlsx文件。

以下是如何从一个SpreadsheetDocument获取工作表并将其添加到另一个SpreadsheetDocument的基本步骤:

步骤 1: 安装OpenXML SDK

首先,确保你已经安装了OpenXML SDK。你可以通过NuGet包管理器来安装它:

代码语言:txt
复制
Install-Package DocumentFormat.OpenXml

步骤 2: 打开源Excel文件并获取工作表

使用SpreadsheetDocument.Open方法打开源Excel文件,并获取你想要复制的工作表。

代码语言:txt
复制
using DocumentFormat.OpenXml.Packaging;
using DocumentFormat.OpenXml.Spreadsheet;

// 打开源Excel文件
using (SpreadsheetDocument sourceDoc = SpreadsheetDocument.Open("source.xlsx", false))
{
    // 获取源文件中的第一个工作表
    WorksheetPart sourceWorksheetPart = sourceDoc.WorkbookPart.WorksheetParts.First();
    Worksheet sourceWorksheet = sourceWorksheetPart.Worksheet;
}

步骤 3: 创建目标Excel文件并添加工作表

创建一个新的SpreadsheetDocument实例作为目标文件,并将源工作表复制到这个新文件中。

代码语言:txt
复制
// 创建目标Excel文件
using (SpreadsheetDocument targetDoc = SpreadsheetDocument.Create("target.xlsx", sourceDoc.DocumentType))
{
    // 复制源文件的工作簿部分到目标文件
    WorkbookPart targetWorkbookPart = targetDoc.AddWorkbookPart();
    sourceDoc.WorkbookPart.CopyPartTo(targetWorkbookPart);

    // 添加一个新的工作表部分到目标文件的工作簿
    WorksheetPart targetWorksheetPart = targetWorkbookPart.AddNewPart<WorksheetPart>();
    using (Stream stream = targetWorksheetPart.GetStream())
    {
        sourceWorksheetPart.Worksheet.Save(stream);
    }

    // 更新目标文件的工作簿引用
    targetWorkbookPart.Workbook = new Workbook();
    targetWorkbook.AddWorksheet(new Worksheet(targetWorksheetPart));
}

注意事项

  • 在复制工作表时,确保处理好相关的引用,比如样式、图表、公式等,这些可能不会被直接复制。
  • 如果源文件很大,复制过程可能会消耗较多内存和时间。
  • 在处理Excel文件时,始终要确保你有权限读取源文件,并且有权限写入目标文件。

参考链接

这个过程涉及到文件的读取和写入操作,因此在实际应用中,你可能需要添加异常处理来确保程序的健壮性。此外,如果你在处理敏感数据,还需要考虑数据的安全性和隐私保护。

相关搜索:无法从一个工作表获取ID并写入另一个工作簿C# MySQL无法从一个表中提取数据并添加到另一个表中组合sql查询。从一个表中减去并添加到另一个表中如何从一个具有可变行数的工作表中获取平均值,并将其放到另一个工作表中?Oracle从一个表中获取数据,并使用它从另一个表中获取数据如何在Excel 2013中将活动列名称从一个工作表获取到另一个工作表PHP从一个获取数组并添加到另一个的属性中使用Python从一个excel工作表查找另一个excel工作表中的值并打印结果如何在oracle中从一个表中获取另一个表的id计数从一个单元格获取值并将其集中在另一个工作表Vba Excel上从一个ID中获取sesult并添加到JS中的另一个ID中使用输入如何从一个工作表上的行复制某些数据并将其显示在另一个工作表中从一个工作表中复制查询函数的结果,并将其追加到不同文件中另一个工作表的末尾在同一活动工作簿中从一个工作表复制并粘贴到另一个工作表时出现错误1004当我从一个excel工作表复制数据并将其粘贴到另一个包含多个工作表的excel文件中时,其他工作表被删除。如何从一个表中获取total_weight形式的权重和并将其存储在另一个表中使用for循环从一个数组中获取随机对象并将其添加到另一个数组中需要根据选择的名称从一个工作表中获取数据,并打印出所有信息复制工作表,将其移动到特定工作表之后,根据另一个工作表中的单元格对其进行重命名,并粘贴特殊值从不同的列中获取唯一值并粘贴到另一个工作表中
相关搜索:
页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

Excel技术:如何在工作筛选获取另一工作的数据

标签:Power Query,Filter函数 问题:需要整理一有数千条数据的列表,Excel可以很方便地搜索显示需要的条目,然而,想把经过提炼的结果列表移到一新的电子表格,不知道有什么好方法?...图1 示例数据位于名为“1”的,我们想获取“产地”列为“宜昌”的数据。...方法1:使用Power Query 在新工作簿,单击功能区“数据”选项卡的“获取数据——来自文件——从工作簿”命令,找到“1”所在的工作簿,单击“导入”,在弹出的导航器中选择工作簿文件的“1”...图3 方法2:使用FILTER函数 新建一工作,在合适的位置输入公式: =FILTER(1,1[产地]="宜昌") 结果如下图4所示。...参数include,筛选的条件,语句应返回为TRUE,以便将其包含在查询。参数if_empty,如果没有满足筛选条件的结果,则在这里指定返回的内容,可选。

13.9K40
  • dotnet OpenXML 读取 PPT 内嵌 xlsx 格式 Excel 表格的信息

    在 Office ,可以在 PPT 里面插入表格,插入表格有好多不同的方法,对应 OpenXML 文档存储的更多不同的方式。...v="urn:schemas-microsoft-com:vml" Requires="v"> <p:oleObj spid="_x0000_s1026" name="<em>工作</em><em>表</em>...= <em>SpreadsheetDocument</em>.Open(xlsxFile, false); var sheets = <em>spreadsheetDocument</em>.WorkbookPart...Workbook.Sheets; 更多读取 Excel 的方法请看 <em>C#</em> dotnet WPF 使用 OpenXml 解析 Excel 文件 本文以上的测试文件和代码放在github 和 gitee 欢迎访问...可以通过如下方式<em>获取</em>本文的源代码,先创建一<em>个</em>空文件夹,接着使用命令行 cd 命令进入此空文件夹,在命令行里面输入以下代码,即可<em>获取</em>到本文的代码 git init git remote add origin

    1.1K20

    dotnet OpenXML 读取 PPT 内嵌 ole 格式 Excel 表格的信息

    在 Office ,可以在 PPT 里面插入表格,插入表格有好多不同的方法,对应 OpenXML 文档存储的更多不同的方式。...v="urn:schemas-microsoft-com:vml" Requires="v"> <p:oleObj spid="_x0000_s1026" name="<em>工作</em><em>表</em>...但是有一些不同的是,此文件不属于 xls 文件格式,而是细分为两<em>个</em>类别,其中一<em>个</em>是在 OLE 里面存放 xls 的,<em>另一个</em>存放的是 xlsx 的。...OLE 对象,为了解析此文件,咱需要引入一<em>个</em>基于 MPL 协议(宽松,可商业,无须开源)的 Open MCDF 库,这是一<em>个</em>完全由 <em>C#</em> 实现的读取 OLE 格式文档的库,在我做 VisualStudio...github 和 gitee 欢迎访问 可以通过如下方式<em>获取</em>本文的源代码,先创建一<em>个</em>空文件夹,接着使用命令行 cd 命令进入此空文件夹,在命令行里面输入以下代码,即可<em>获取</em>到本文的代码 git init

    1.3K40

    C# 程序嵌入百度地图的全面指南

    本文将深入探讨如何在 C# 程序嵌入百度地图,重点包括环境准备、基本功能实现及一些高级应用。1. 环境准备要在 C# 程序中使用百度地图,首先需要做好开发环境的准备。...你可以通过 JavaScript 获取用户的经纬度,并将其传递给 C# 后端进行处理。...后端});在 C# ,你可以设置一 HTTP 端点来接收这些数据。...高级应用3.1 路径规划百度地图提供路径规划的 API,可以实现从一地点到另一个地点的导航。...总结本文详细介绍了如何在 C# 程序嵌入百度地图,包括基本功能的实现和一些高级应用。通过结合 C# 后端与 JavaScript 前端,你可以创建功能丰富的地图应用程序。

    24000

    使用Python将多个Excel文件合并到一主电子表格

    注意,默认情况下,此方法仅读取Excel文件的第一工作。 append()将数据从一文件追加/合并到另一个文件。考虑从一Excel文件复制一块数据粘贴到另一个Excel文件。...2.如果是,则读取文件内容(数据),并将其追加/添加到名为df的主数据框架变量。 3.将主数据框架保存到Excel电子表格。...合并同一Excel文件的多个工作 在《使用Python pandas读取多个Excel工作,讲解了两种技术,这里不再重复,但会使用稍微不同的设置来看一示例。...我们有2文件,每个文件包含若干个工作。我们不知道每个文件中有多少工作,但知道所有工作的格式都是相同的。目标是将所有工作聚合到一电子表格(和一文件)。...工作流程如下: 1.获取所有Excel文件。 2.循环遍历Excel文件。 3.对于每个文件,循环遍历所有工作。 4.将每个工作读入一数据框架,然后将所有数据框架组合在一起。

    5.5K20

    .NET周刊【5月第3期 2024-05-19】

    通过定期运行查询,对比统计数据,可以检测执行计划的变化,据此优化性能。为了准确监测,建议将数据记录在持久化,并可能需要结合多个 DMVs 来进行综合分析。...文章以构建三服务的示例来展示 Dapr 与.NET Aspire 的整合,概述了利用.NET Aspire 进行 Dapr 实验的过程。...文章展示了 C#如何编写和安装拦截器,通过调用管道把拦截器串联起来,以便对请求和响应进行处理。作者在结语鼓励持续实践以提高能力,开放性地邀请读者交流。...文章从一实际案例出发,展示了一模型验证导致的错误,解决了这个问题。方法是在对应的处理器(Handler)中使用 ModelState.Clear()清空模型状态。...用户只需将转换得到的 Base64 字符串以 Markdown 格式添加到文本,即可在支持 Markdown 的编辑器 Typora 里展示图片。

    10000

    使用VBA将图片从一工作移动到另一个工作

    下面的Excel VBA示例将使用少量的Excel VBA代码将图片从一工作移动到另一个工作。为了实现这个目的,要考虑以下事情: 1.要移动的图片的名称。...图1 所有图片(旗帜)都有一名称(中国、加拿大、巴哈马等),并将其添加到验证列表。只需从蓝色下拉列表中选择要移动的图片名称,然后单击移动按钮,就可将相应的图片(旗帜)移动到另一个工作。...MovePicture() Dim sh As Worksheet Dim Pic As Object Set sh = Sheet2 Application.ScreenUpdating = False '先删除目标工作的所有图片...[d8].PasteSpecial Application.ScreenUpdating = True End Sub 上面简单的程序分为两部分,首先从目标工作删除所有图片(Sheet1是目标工作...然后将单元格E13名称对应的图片复制到工作1的单元格D8。演示如下图2所示。 图2 有兴趣的朋友可以到原网站下载原始示例工作簿。也可以到知识星球App完美Excel社群下载汉化后的示例工作簿。

    3.8K20

    tolua之wrap文件的原理与使用

    ,如果类的元的元(类的元是承载每个类方法和属性的实体,类的元的元就是类的父类) ②将类添加到loaded。...RegFunction部分 每一RefFunction做的事都很简单,将每个函数转化为一指针,然后添加到类的元中去,与将一c函数注册到lua是一样的。...RegVar部分 每一变量或属性或被包装成get_xxx,set_xxx函数注册添加到类的元的gettag,settag中去,用于调用和获取。..._G供人调用的一充当索引的,我们通过它来触发GameObject元的各种元方法,实现对c#类的使用。...所以说lua调用和创建的c#实例实际都是存在c#的objects,lua的变量只是一持有该c#实例索引位置的fulluserdata,并没有直接对c#实例进行引用。

    2K20

    何在 C# 以编程的方式将 CSV 转为 Excel XLSX 文件

    在本文中,小编将为大家介绍如何在Java以编程的方式将【比特币-美元】市场数据CSV文件转化为XLSX 文件。...创建项目 (1)使用 Visual Studio 2022,创建一新项目 ( CTRL+SHIFT+N ) 在下拉列表 选择 C#、 所有平台和 WebAPI ,以快速找到项目类型ASP.NET...() 的代码 并将其导入到新 工作簿 BTCChartController.Get [HttpGet(Name = "GetBTC-USDChartWorkbook")] //public IEnumerable...然后,它创建一 名为 BTC_Monthly的 ,其中包含 CSV 数据自动调整 的列。...然后,代码在整个表格范围内添加一StockVOHLC 类型的工作 (成交量-开盘-高-低-收盘)新图表,设置图表标题,将系列添加到图表,将类别轴单位更改为“月”,更新类别轴刻度标签方向和数字格式,

    21210

    【Unity游戏开发】tolua之wrap文件的原理与使用

    ,如果类的元的元(类的元是承载每个类方法和属性的实体,类的元的元就是类的父类)   ②将类添加到loaded。   ...RegFunction部分   每一RefFunction做的事都很简单,将每个函数转化为一指针,然后添加到类的元中去,与将一c函数注册到lua是一样的。...RegVar部分   每一变量或属性或被包装成get_xxx,set_xxx函数注册添加到类的元的gettag,settag中去,用于调用和获取。...G供人调用的一充当索引的,我们通过它来触发GameObject元的各种元方法,实现对c#类的使用。...所以说lua调用和创建的c#实例实际都是存在c#的objects,lua的变量只是一持有该c#实例索引位置的fulluserdata,并没有直接对c#实例进行引用。

    2.1K40

    在.NET Core中使用MongoDB明细教程(1):驱动基础及文档插入

    在本系列教程,我们将使用C#驱动程序. 准备工作 在开始之前,我们需要打开VisualStudio创建一新项目。我将在本教程中使用一控制台项目。为了演示我们需要安装对应的NuGet包。...这个MongoClient对象是线程安全的,因此您可以将其放在静态字段,使其成为可以通过DI容器随时获得的Singleton对象,或者使用相同的连接设置实例化一新的字段(下面将使用相同的连接池);通过这个对象...使用数据库对象,可以从数据库创建、重命名、检索或获取集合列表。文档存储在集合,如果你对SQL比较熟悉的话,可以将集合视为,将文档视为的记录。...获取集合 在讨论了创建集合之后,还需要一额外的步骤来检查集合是否存在,创建它,然后将文档添加到集合。如果集合不存在,GetCollection会自动创建一集合,并将文档添加到该集合。...在这个包,我们有表示BSON类型的类,以及如何在.NET类型和BsonValue之间映射。

    2.9K30

    超硬核!苏州同程旅游学长给我的全面的面试知识库

    新生和经验丰富的C#面试常见问题解答 以下是一些针对新手和有经验的C#开发人员候选人的常见访谈问题,以找到合适的工作。...10、C#“ using”语句的用途是什么? “使用”块用于获取资源对其进行处理,然后在执行完该块后自动将其丢弃。 11、什么是序列化? 当我们想通过网络传输对象时,我们必须将对象转换为字节流。...我们可以轻松地将自定义控件添加到多个应用程序(如果共享的Dll)。因此,如果它们是私有的,那么我们可以将其复制到dll到Web应用程序的bin目录,然后添加引用并可以使用它们。...使用Clone()方法,我们使用CopyTo()方法创建一包含原始Array中所有元素的新数组对象。现有阵列的所有元素都将复制到另一个现有阵列。两种方法都执行浅表复制。...委托与C ++的函数指针相同,但是唯一的区别是它们与类型指针不同,它们是类型安全的。委托是必需的,因为它们可用于编写更多通用的类型安全函数。 34、如何在C#中将一类继承到其他类?

    3K20

    【20】进大厂必须掌握的面试题-50Hadoop面试

    现在,他们可以成功地从数据获取价值,通过增强的业务决策能力在竞争者拥有明显的优势。 ♣提示:在这样的问题中谈论5V是一好主意,无论是否被特别询问!...简而言之,“检查点”是一获取FsImage,编辑日志并将其压缩为新的FsImage的过程。因此,代替重播编辑日志,NameNode可以直接从FsImage加载最终的内存状态。...序列文件可以作为其他MapReduce任务的输出生成,并且是从一MapReduce作业传递到另一个MapReduce作业的数据的有效中间表示。 Apache Pig面试问题 34....如果某些函数在内置运算符不可用,我们可以通过编程方式创建用户定义函数(UDF),以使用其他语言(Java,Python,Ruby等)来实现这些功能,并将其嵌入脚本文件。 ?...Apache Oozie是一调度程序,用于调度Hadoop作业并将其绑定为一项逻辑工作。Oozie工作有两种: Oozie工作流程\:这些是要执行的顺序动作集。您可以将其视为接力赛。

    1.9K10

    何在C#中使用 Excel 动态函数生成依赖列表

    前言 在Excel ,依赖列表或级联下拉列表表示两或多个列表,其中一列表的项根据另一个列表而变化。...("E:\\download\\smartdependentlist\\CustomerOrderHistory.xlsx"); 步骤 2 - 获取工作 接下来,您需要获取用于创建所需报告的工作。...使用 GcExcel,可以使用 IWorkbook 界面的 API 获取工作。您也可以选择创建一新的工作。...data"]; //OR workbook.Worksheets[0]; 步骤 3 - 获取客户名称的唯一列(用于主下拉列表) 初始化后,需要获取添加到报表“选择客户名称”部分的主下拉列表的唯一客户名称列表...为此,请再次选择工作的任何单元格(在此示例,此单元格为 V2)。在此单元格中使用以下公式获取所需的 OrderID 列表。

    17110

    .NET Core的一关键特性是性能

    在这篇文章,我们将讨论一些优化,以及如何在以后的性能工作更多地使用连续流或Span,为我们的开发人员生活带来帮助。...c#和VB.NET 15引入了“值元组”,这很容易添加到.NET Core,因为更快的发布周期,并且针对完整的.NET 4.5.2和更早的版本,可以作为一NuGet包用于完整的.NET,在.NET 4.7...c# 7和VB.NET 15添加了一语言特性,可以从一方法返回多个值。...我们需要获取System.String返回一新System.String的方法,即要处理的托管版本的子字符串。非托管/堆栈版本将使用char*(是的,一指针!)...想象一下一web框架的实现,它使用上面的代码从一包含header和body的HTTP请求获取请求体。我们必须分配具有重复数据的大块内存:一具有整个传入请求的内存和一仅包含请求体的子字符串。

    72320

    零停机迁移 Postgres的正确方式

    分 析 在本文中,我们将讨论将多个 Web 应用程序(微服务)从一数据库迁移到另一个的过程。现代软件架构由多个应用程序(或微服务)组成,而每个应用程序都有多个运行实例以增强扩展性。...一简单的解决方案是停止旧数据库的写入操作,获取快照,将其恢复到新的数据库,然后在新数据库恢复操作。这种方案需要的停机时间太久,不适合生产环境。...当发生更改时,触发器会将所有受影响的主键添加到 Bucardo 实例的 Postgres 的“delta”另一个触发器将“启动(kick)”同步。...你可以从第一数据库获取全包快照并将其恢复到新实例,或者你可以从一新的空数据库开始,然后分别传输用户、模式和数据(按这个顺序)。我们推荐后一种方法。...这里会发生并发插入,并且在两个数据库创建两条不同的记录,它们都以 43 作为 PK,但数据不同。如果你让 Bucardo 处理冲突,它会只保留最新的一删除另一个

    1.4K20
    领券