C# NPOI Excel 跨工作薄Workbook复制工作表Sheet

npoi数据操作复制指定 sheet,删除SheetExcel插入图片 打开文件: 1在同一个excel文件中拷贝工作表 ISheet sheet= myBook.GetSheet("SheetHz"); //选定工作表 ISheet ThisSheet = sheet.CopySheet("2");;//拷贝工作表表名为2 2删除Excel表中指定的哪个sheet myBook.RemoveSheetAt(myBook.GetSheetIndex("SheetName"))//删除对应的表名 3指定位置插入图片 int pictureIdx = myBook. 阅读详情

跨工作薄复制Sheet,并不是单纯的将Sheet的数据复制到新Sheet中,需要将数据、公式等包括数据格式(DataFormat),单元格的风格(CellStyle)等等都复制到新Sheet中。

NPOI目前的版本为2.5.1,其Excel处理已经可以较好的支持XSSF(2007及以上)与HSSF(2003及以下)各自的工作薄间的Sheet拷贝,但XSSF工作薄与HSSF工作薄间的Sheet拷贝仍未实现。而2.4.1版的HSSF的Sheet拷贝也并未完善,虽然大部分功能已实现,颜色上有异常,2.5.1版已正常。为了处理各种情况下的Sheet的拷贝,网上有比较多的示例,比较成功的示例虽然有所不同但处理方式大同小异,有些处理考虑也有不到的地方。可参考:NPOI中如何复制Sheetpoi操作excel,复制sheet,复制行,复制单元格。由于某些原因,此处只考虑NPOI 2.4.1的版本下的处理,某些不同的版本可能会有些不同。

处理思路:Sheet的复制主要考虑的就是单元格Cell,分Cell的数据与风格。数据处理网上有许多成功示例,请自寻不赘述。风格处理包括:单元格的各种情况,其中重点是字体与颜色的处理(私设:这也是目前NPOI未解决得好的原因吧 :-p )。本人参考了许多示例,Sheet复制已经能够基本解决,但一直未能处理好颜色情况(包括字体颜色),注意:此处指HSSF与XSSF间的相互或自我复制的不同情况。以下出现的代码示例中,有关颜色部分被屏蔽,呵呵,虽未成功但一直努力中……如有哪位能够解决并提供代码的话,那么基本上NPOI的Sheet复制基本上就成功了。当然,仍然有其它的方面需要解决(如:Chart、Picture……),但对于一般的代码应用,估计差不多了吧。

不多说了……翠花,上酸菜——

public static class NPOIExt
{
    /// <summary>
    /// 跨工作薄Workbook复制工作表Sheet
    /// </summary>
    /// <param name="sSheet">源工作表Sheet</param>
    /// <param name="dWb">目标工作薄Workbook</param>
    /// <param name="dSheetName">目标工作表Sheet名</param>
    /// <param name="clonePrintSetup">是否复制打印设置</param>
    public static ISheet CrossCloneSheet(this ISheet sSheet, IWorkbook dWb, string dSheetName, bool clonePrintSetup)
    {
        ISheet dSheet;
        dSheetName = string.IsNullOrEmpty(dSheetName) ? sSheet.SheetName : dSheetName;
        dSheetName = (dWb.GetSheet(dSheetName) == null) ? dSheetName : dSheetName + "_拷贝";
        dSheet = dWb.GetSheet(dSheetName) ?? dWb.CreateSheet(dSheetName);
        CopySheet(sSheet, dSheet);
        if (clonePrintSetup)
            ClonePrintSetup(sSheet, dSheet);
        dWb.SetActiveSheet(dWb.GetSheetIndex(dSheet));  //当前Sheet作为下次打开默认Sheet
        return dSheet;
    }
    /// <summary>
    /// 跨工作薄Workbook复制工作表Sheet
    /// </summary>
    /// <param name="sSheet">源工作表Sheet</param>
    /// <param name="dWb">目标工作薄Workbook</param>
    /// <param name="dSheetName">目标工作表Sheet名</param>
    public static ISheet CrossCloneSheet(this ISheet sSheet, IWorkbook dWb, string dSheetName)
    {
        bool clonePrintSetup = true;
        return CrossCloneSheet(sSheet, dWb, dSheetName, clonePrintSetup);
    }
    /// <summary>
    /// 跨工作薄Workbook复制工作表Sheet
    /// </summary>
    /// <param name="sSheet">源工作表Sheet</param>
    /// <param name="dWb">目标工作薄Workbook</param>
    public static ISheet CrossCloneSheet(this ISheet sSheet, IWorkbook dWb)
    {
        string dSheetName = sSheet.SheetName;
        bool clonePrintSetup = true;
        return CrossCloneSheet(sSheet, dWb, dSheetName, clonePrintSetup);
    }

  
NPOI实战:Excel表格复制Sheet与插入图片的完整指南(附代码) 本文深入探讨了使用NPOI库进行Excel自动化处理的两个高级技巧:工作簿深度复制Sheet与精准插入图片。针对内置方法不复制合并单元格的缺陷,提供了完整的SheetCloner工具类代码;同时详细解析了通过IClientAnchor控制图片位置与大小的实践方法,并附带了整合复制与插入功能的报表生成模块实战示例。 阅读详情

相关推荐

NPOI实战:Excel表格复制Sheet与插入图片的5个常见问题解决方案

本文针对NPOI操作Excel复制Sheet与插入图片的5个常见问题,提供了深度解决方案。详细解析了Sheet复制中的格式丢失、合并单元格处理、工作簿样式迁移等难点,并深入探讨了使用IClientAnchor精准控制图片位置、批量插入的性能优化等实战技巧,帮助.NET开发者构建健壮的Excel报表处理功能。

quiet的专栏 191

NPOI中如何复制Sheet

NPOI已经发布到了2.0的版本,可喜的是该版本支持到了Excel2007,但缺憾的是没有复制SHEET表的功能,只有一个CloneSheet方法,确实没明白怎么使用。所以在网上搜索了一下,只找一个JAVA的版本,好像也是自己写的代码实现的。于是拿过来翻译了一下,复制SHEET后的格式基本没变,但单元格的宽度没有实现,ICell接口没有类似于Width的属性,只好作罢。 哪位如果知道CloneS

1万+

C#使用NPOI将DataGridView内数据写入电子表格Excel

C#使用NPOI将DataGridView内数据写入电子表格Excel NPOI能够在用户没有安装office的情况下读写office文件,包括.xls/.doc/.ppt等类型的文件。本文介绍的是使用NPOI库内的函数读写Excel(.xls)内的内容。在使用NPOI之前首先先要将NPOI添加到工程应用中,NPOI的官网链接:https://archive.codeplex.com/?p=npo...

BowenXu11的博客 1581

NPOI复制Excel工作簿Sheet以及删除Excel工作簿

最近项目中,根据用户要求,需要批量导出Excel(系统里每天产生很多单子,以前都是一个一个的导出的,最近用户要求输入日期,导出该天所有单子)。 原来是使用NPOI操作Excel。自以为是的以为批量导出不就是把该天所有单子都查询出来,写个循环一个一个导出就OK了。 可是写好之后运行时才发现,导出第一个Excel后,页面就没有反应了,貌似是输出流已关闭,可是不关闭时测试后还是不行。 就开始换个思

yangmingxing980的专栏 1万+

C#NPOI

C#NPOI 一、NPOI的引用 二、操作Excel 1.创建新的Excel工作簿 2.读取现有的Excel工作簿 3.操作sheet工作表 4.操作workbook工作簿 5.workbook工作簿复制sheet工作表 编辑器:Visual Studio 语言:C# 一、NPOI的引用 1.根据Visual Studio版本安装NuGet.Tools 网址:https://www.nuget.org/downloads 2.工具→NuGet包管理器→程序包管理器控制台 3.输入"Install-P

weixin_44400515的博客 5369

NPOI复制模板另存为新的excel

使用NPOI组件 excel类 引用 using NPOI.HSSF.UserModel;using NPOI.SS.UserModel;using NPOI.SS.Util;using NPOI.XSSF.UserModel;using System.IO; #region 正式导出无bug public HSSFWorkbook DataTabl...

928

C#利用NPOI 简单的导入导出excel及获取外部引入excel时的方法

(此处为简易的循环输入数字,可以根据自己的业务进行输入)如果为“.xlsx”便创建HSSFWorkBook。(种类三:引用不存在的工作簿的sheet内容)2、创建sheet(至少存在一个sheet)(种类一:引用本工作簿的不同sheet内容)(种类二:引用外部工作簿的sheet内容)4、可以进行一些单元格样式或字体的设置。注意,其中的值类型要进行区分判断。(种类四:引用错误函数的内容)4、创建单元格并获取其中的值。1、创建workbook。2、创建workbook。注意:文件类型的判断。

Pocketful的博客 1452

C# Winform DataGridView数据导出Excel:基于NPOI的轻量高效解决方案

C#桌面应用开发中,数据导出是常见的功能需求,尤其将DataGridView控件中的数据导出为Excel文件,是Winform开发中的刚需。其核心原理在于通过程序化操作,将内存中的数据模型转换为Excel文件格式。这一技术对于提升应用的数据交换能力和用户体验具有重要价值,广泛应用于报表生成、数据存档和离线分析等场景。NPOI作为一个纯托管的.NET库,因其无需依赖Office环境、支持.xls/.xlsx双格式以及Apache 2.0开源协议,成为实现此功能的优选工具。本文聚焦于使用NPOI库,详细解析如

weixin_30847865的博客 392

Unity游戏开发:使用NPOI实现Excel数据高效读写与管理

在游戏开发中,数据驱动设计是提升开发效率和维护性的核心思想,其原理是将游戏逻辑与配置数据分离,通过外部文件进行管理。这种技术价值在于实现了策划与程序的高效协作,支持热更新,并便于数据版本控制。在应用场景上,游戏中的角色属性、道具配置、关卡信息等海量数据,通常需要结构化存储与便捷编辑。Excel凭借其强大的表格处理能力和广泛的使用基础,成为游戏行业,尤其是中小团队青睐的数据配置工具。然而,Unity原生并不直接支持Excel文件读写,这就需要借助NPOI这样的开源.NET库作为桥梁。NPOI是一个纯C#实现、

weixin_30328063的博客 439

excel文本写入 npoi_NPOI 创建Excel,数据读取与写入

<1>using System;using System.Collections.Generic;using System.Linq;using System.Web;using NPOI.HSSF.UserModel;using NPOI.SS.UserModel;using NPOI.SS.Formula.Functions;using System.IO;using System...

weixin_39900206的博客 218

Unity游戏开发:基于NPOIExcel配置表自动化生成方案

在游戏开发中,配置表是管理角色属性、道具数据等海量结构化信息的核心工具。其基本原理是将数据与代码分离,通过外部文件(如Excel)存储,运行时动态加载,从而避免硬编码带来的频繁编译问题。这项技术的核心价值在于提升团队协作效率与数据维护的准确性,尤其适用于需要策划与程序频繁协作调整数据的项目。通过自动化工具链,可以定义数据Schema并自动生成强类型的C#数据类和加载代码,将策划维护的Excel源文件与程序使用的接口清晰解耦。应用场景广泛覆盖游戏开发中的各类数据驱动模块。本文以Unity引擎为例,详细阐述了如

weixin_30352191的博客 402

Unity游戏开发:基于NPOI实现Excel配置表自动化生成与解析

在游戏开发中,配置表管理是连接策划与程序的关键环节,传统手动同步方式效率低下且易出错。通过引入自动化流程,可以实现数据结构的自动映射与生成,从而提升开发效率和数据一致性。NPOI作为一个强大的.NET开源库,能够在无需安装Microsoft Office的环境下读写Excel文件,为平台开发提供了便利。其技术价值在于将重复性工作自动化,减少人为失误,并支持版本控制。在Unity游戏开发的应用场景中,策划人员可以直接在Excel中维护数值,程序通过NPOI自动解析并生成C#类实例或ScriptableObj

weixin_30631587的博客 290

Unity游戏开发:使用NPoi构建高效Excel数据导入管道

在游戏开发中,数据驱动是核心架构思想,而Excel因其直观易用,常作为配置数据(如角色属性、关卡设计)的首选载体。其原理在于将游戏逻辑与数值配置分离,通过外部文件动态控制游戏行为,从而提升开发效率和迭代速度。这项技术的核心价值在于实现工作流的自动化与工程化,避免开发者在Unity编辑器与Excel之间进行繁琐的手动复制粘贴,确保数据的一致性与可维护性。在Unity项目实践中,一个健壮的数据导入管道能将Excel数据高效、稳定地转换为游戏运行时可直接使用的格式(如ScriptableObject或JSON)。

weixin_34007886的博客 304

Unity集成NPOI 2.5.2处理Excel:配置读取、数据导出与平台实践

在游戏开发和企业应用领域,数据处理是核心环节,其中Excel文件因其强大的表格功能和广泛的协作性,常被用于存储游戏配置、数值平衡表或运营数据。为了在Unity引擎中高效、稳定地读写Excel文件,开发者需要借助成熟的第三方库。NPOI作为.NET平台下开源、零依赖的Office文档操作组件,其原理是通过纯托管代码解析Excel的OLE2和OpenXML格式,无需安装Microsoft Office即可实现平台支持。这一技术方案为Unity项目带来了显著价值:它使得策划与程序的数据协作流程得以解耦,支持运行

weixin_30443813的博客 442

Unity集成NPOI 2.5.2:构建高效Excel数据管理工具全攻略

在游戏开发与软件工程中,数据驱动设计是提升开发效率的核心。通过配置文件(如Excel)管理游戏参数、关卡数据或剧情脚本,能够实现策划与程序的高效协作。其技术原理在于将外部结构化数据(如Excel表格)通过特定的库(如NPOI)进行序列化与反序列化,映射为程序内部的对象模型。这种方案的技术价值在于实现了数据与逻辑的解耦,支持非技术人员(如策划)直接参与内容生产,并保证了数据版本的可追溯性。在Unity引擎的应用场景中,开发者常面临如何将Excel数据无缝集成到编辑器工作流的挑战。本文聚焦于使用NPOI 2.5

weixin_33725239的博客 343

Unity游戏开发:Excel数据配置读取与JSON转换全流程实践

在游戏开发中,数据驱动是核心设计模式之一,它通过将游戏逻辑与数值、配置分离,极大地提升了项目的可维护性和团队协作效率。其基本原理是使用外部文件(如Excel、JSON)存储游戏数据,运行时由程序动态加载和解析。这项技术的核心价值在于实现了策划与程序工作的解耦,策划可以在无需修改代码的情况下调整游戏平衡性、角色属性和关卡设计。典型的应用场景包括角色属性配置、道具系统、任务对话和本地化文本管理。本文以Unity引擎为例,深入探讨如何利用NPOI库解析Excel文件,并将其高效转换为JSON格式的配置文件,同时自

weixin_33755649的博客 384

【转载】多个Excel文件的第一个工作表Sheet)合并到一个Excel文件的多个工作表里...

'功能:把多个工作簿的第一个工作表合并到一个工作簿的多个工作表,新工作表的名称等于原工作簿的名称 Sub Books2Sheets() '定义对话框变量 Dim fd As FileDialog Set fd = Application.FileDialog(msoFileDialogFilePicker) '新建一个工作簿 D...

weixin_30421525的博客 656

ActiveX控制Excel自动化:原理、实战与性能优化指南

在软件自动化领域,组件对象模型(COM)技术为应用程序间的深度交互提供了底层支持。其核心原理是通过标准接口暴露对象功能,实现进程通信与互操作。这一技术价值在于能够无缝集成并完全控制宿主应用程序,尤其适用于对功能完整性、操作保真度和性能有苛刻要求的场景。在数据处理与报表生成领域,微软Excel作为广泛使用的电子表格软件,其完整的对象模型(如Application、Workbook、Worksheet、Range)通过COM接口暴露,使得外部程序可以像用户一样精细操作工作簿、写入数据、应用格式、生成图表乃至调

weixin_33827590的博客 574
上一篇: C# WinForm 检测文件是否被占用
下一篇: VFP CursorAdapter 起步二(作者:Doug Hennig 译者:fbilo)
老瓷
博客等级 码龄21年 5粉丝 12原创
评论 5
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值