C# 如何创建Excel多级分组
在Excel中如果能够将具有多级明细的数据进行分组显示,可以清晰地展示数据表格的整体结构,使整个文档具有一定层次感。根据需要设置显示或者隐藏分类数据下的详细信息,在便于数据查看、管理的同时也使文档更具美观性。那么,在C#中如何来创建Excel数据的多级分组显示呢?下面将进行详细阐述。方法中使用了免费版组件Free Spire.XLS for .NET,下载安装该组件,创建一个控制台应用程序后,添加引用该组件安装包下的dll文件到项目中,同时添加相应的命名空间即可。下面是具体的代码操作步骤,供参考。
步骤一:创建一个Wordbook类对象,获取第一个工作表
Workbook workbook = new Workbook(); Worksheet sheet = workbook.Worksheets[0];
步骤二:写入数据到单元格
sheet.Range["A1"].Value = "公司部门"; sheet.Range["A3"].Value = "综合部"; sheet.Range["A4"].Value = "行政"; sheet.Range["A5"].Value = "人事"; sheet.Range["A6"].Value = "市场部"; sheet.Range["A7"].Value = "业务部"; sheet.Range["A8"].Value = "客服部"; sheet.Range["A9"].Value = "技术部"; sheet.Range["A10"].Value = "技术开发"; sheet.Range["A11"].Value = "技术支持"; sheet.Range["A12"].Value = "售前支持"; sheet.Range["A13"].Value = "售后支持";
步骤三:设置IsSummaryRowBelow属性为false, 即总结行显示在明细行上方
sheet.PageSetup.IsSummaryRowBelow = false;
步骤四:选择行进行分组,参数false表示展开当前分组,如需隐藏,设置成true
//选择行进行一级分组 sheet.GroupByRows(2, 13, false); //选择行进行二级分组 sheet.GroupByRows(4,5 , false); sheet.GroupByRows(7, 8, false); sheet.GroupByRows(10,13 , false); //选择行进行三级分组 sheet.GroupByRows(12,13, true);
步骤五:定义一个CellStyle对象,设置并运用格式到单元格内字体
CellStyle style = workbook.Styles.Add("style"); style.Font.IsBold = true; style.Color = Color.LawnGreen; sheet.Range["A1"].CellStyleName = style.Name; sheet.Range["A3"].CellStyleName = style.Name; sheet.Range["A6"].CellStyleName = style.Name; sheet.Range["A9"].CellStyleName = style.Name;
步骤六:设置区域边框样式
sheet.Range["A4:A5"].BorderAround(LineStyleType.Thin); sheet.Range["A4:A5"].BorderInside(LineStyleType.Thin); sheet.Range["A7:A8"].BorderAround(LineStyleType.Thin); sheet.Range["A7:A8"].BorderInside(LineStyleType.Thin); sheet.Range["A10:A13"].BorderAround(LineStyleType.Thin); sheet.Range["A10:A13"].BorderInside(LineStyleType.Thin);
步骤七:保存文档
workbook.SaveToFile("output.xlsx", ExcelVersion.Version2013);
运行程序生成文档(可在该项目文件夹下bin>Debug文件夹下查看生成的文档)
效果展示:
全部代码:


1 using System; 2 using System.Drawing; 3 using Spire.Xls; 4 5 6 namespace MultilevelGroup_XLS 7 { 8 class Program 9 { 10 static void Main(string[] args) 11 { 12 //创建一个Wordbook类对象,获取第一个工作表 13 Workbook workbook = new Workbook(); 14 Worksheet sheet = workbook.Worksheets[0]; 15 16 //写入数据到单元格 17 sheet.Range["A1"].Value = "公司部门"; 18 sheet.Range["A3"].Value = "综合部"; 19 sheet.Range["A4"].Value = "行政"; 20 sheet.Range["A5"].Value = "人事"; 21 sheet.Range["A6"].Value = "市场部"; 22 sheet.Range["A7"].Value = "业务部"; 23 sheet.Range["A8"].Value = "客服部"; 24 sheet.Range["A9"].Value = "技术部"; 25 sheet.Range["A10"].Value = "技术开发"; 26 sheet.Range["A11"].Value = "技术支持"; 27 sheet.Range["A12"].Value = "售前支持"; 28 sheet.Range["A13"].Value = "售后支持"; 29 30 //设置IsSummaryRowBelow为false, 即总结行显示在明细行上方 31 sheet.PageSetup.IsSummaryRowBelow = false; 32 33 //选择行进行一级分组 34 //参数false表示展开当前分组,若要隐藏设置成true 35 sheet.GroupByRows(2, 13, false); 36 37 //选择行进行二级分组 38 sheet.GroupByRows(4,5 , false); 39 sheet.GroupByRows(7, 8, false); 40 sheet.GroupByRows(10,13 , false); 41 42 //选择行进行三级分组 43 sheet.GroupByRows(12,13, true); 44 45 //定义一个CellStyle对象,设置并运用单元格内字体格式 46 CellStyle style = workbook.Styles.Add("style"); 47 style.Font.IsBold = true; 48 style.Color = Color.LawnGreen; 49 sheet.Range["A1"].CellStyleName = style.Name; 50 sheet.Range["A3"].CellStyleName = style.Name; 51 sheet.Range["A6"].CellStyleName = style.Name; 52 sheet.Range["A9"].CellStyleName = style.Name; 53 54 //设置区域边框样式 55 sheet.Range["A4:A5"].BorderAround(LineStyleType.Thin); 56 sheet.Range["A4:A5"].BorderInside(LineStyleType.Thin); 57 sheet.Range["A7:A8"].BorderAround(LineStyleType.Thin); 58 sheet.Range["A7:A8"].BorderInside(LineStyleType.Thin); 59 sheet.Range["A10:A13"].BorderAround(LineStyleType.Thin); 60 sheet.Range["A10:A13"].BorderInside(LineStyleType.Thin); 61 62 63 //保存文档 64 workbook.SaveToFile("output.xlsx", ExcelVersion.Version2013); 65 System.Diagnostics.Process.Start("output.xlsx"); 66 } 67 } 68 }
以上是关于设置Excel多级分组的全部操作步骤,如果对您有所帮助,欢迎转载(转载请注明出处)。
感谢阅读!
相关文章:

苹果裁员逾200人,拿无人驾驶“开刀”
整理 | 琥珀出品 | AI科技大本营1 月 14日,据美国媒体 CNBC 援引知情人士消息报道称,本周,苹果泰坦项目(Project Titan)的 200 多名员工遭到解雇。据悉,泰坦项目是苹果未公开的自动驾驶汽车项目。一名苹果发…
linux驱动:i2c驱动(一)
I2C系统框架:I2C核心层、I2C总线驱动、I2C设备驱动 -------------------------------------------------------------------------------- 【I2C核心层】 代码在driver/i2c/i2c-core.c中 【I2C总线驱动】也叫I2C适配器驱动 1、每个适配器视为一个字符设备文件 …

关于SQLServer2005的学习笔记——XML的处理
在 SQLServer2005 中对 XML 的处理功能显然增强了很多,提供了 query(),value(),exist(),modify(),nodes() 等函数。关于 xml ,难以理解的不是 SQLServer 提供的函数,而是对 xml 本身的理解,看似很简单的文件格式,处理起…

2019最新实战!给程序员的7节深度学习必修课,最好还会Python!
整理 | 琥珀出品 | AI科技大本营从 2017 年开始,fast.ai 创始人、数据科学家 Jeremy Howard 以每年一迭代的方式更新“针对编程者的深度学习课程”(Practical Deep Learning For Coders)。这场免费的课程可以教大家如何搭建最前沿的模型、了解…

linux驱动:i2c驱动(二)
3、驱动源码分析 IPNC_RDK_V3.8.0.1/Source/ti_tools/ipnc_psp_arago/kernel/sound/soc/codecs/tlv320aic3x.c 3.1 注册模块 module_init(aic3x_modinit); 3.2 在初始化函数中添加i2c驱动 static int __init aic3x_modinit(void) { intret 0; #if defined(CONFIG_I2C) ||…

01 使用AFN3 0上传图片时间慢的问题
##iOS中修改图片的大小:修改分辨率和裁剪 ###第一步:裁剪图片 // 裁剪// 要裁剪的图片区域,按照原图的像素大小来,超过原图大小的边自动适配CGSize size CGSizeMake(1000, 1000);UIImage *img [self imageWithImageSimple:image scaledToS…

配置telnet
配置telnet<?xml:namespace prefix o ns "urn:schemas-microsoft-com:office:office" />允许root账号能够登录telnet,但是拒绝某一台主机登录且只允许在9:00-14:00 14:00-18:00能够访问࿰…

04 pod setup 慢的问题
解决方式一: 可以直接从别人的电脑中拷贝解决方式二转载于:https://juejin.im/post/5a3c5a985188257d391d3a39
linux驱动:i2c驱动(三)流程图之注册设备
一、设备注册过程 1、将i2c设备信息保存到i2c_board_info结构体中; 2、在注册i2c_board_info时(i2c_register_board_info)将它加入一个全局列表__i2c_board_list中, 3、在注册I2c adapter适配器驱动后,再从全局列表…

AI找Bug,一键快速预测
作者 | Jane出品 | AI科技大本营(ID:rgznai100)在程序开发中,程序员每天都要和 Bug 打交道,对新手程序员而言,debug 是一件非常让人头疼的事情。好不容易写完一段代码,一运行,全是红色ÿ…

专业研究HP procurve网络、阿姆瑞特和系统集成的论坛
一个专业研究HP procurve网络、阿姆瑞特防火墙和系统集成的论坛http://www.vlan2.com确实不错。转载于:https://blog.51cto.com/showrouter/284235

到底是什么特征影响着CNN的性能?
作者 | 刘畅 编辑 | Jane出品 | AI科技大本营(ID:rgznai100)开门见山。最近阅读了一篇论文,加上看了一些之前的工作。记录一下,CNN 到底学到了什么东西,或者换句话讲。到底是什么样的特征在影响着CNN 的性能࿱…

Java数据结构与算法(八)-二叉树
一、为什么要使用树 有序数组插入、删除数据慢。链表查找数据慢树可以解决这两个问题二、相关术语 树的结点:包含一个数据元素及若干指向子树的分支;孩子结点:结点的子树的根称为该结点的孩子;双亲结点:B 结点是A 结点…
linux驱动:i2c驱动(四)流程图之注册驱动
二、i2c设备的驱动部分 1、i2c驱动i2c_driver 2、通过i2c_add_driver注册 2、注册过程中 比较i2c_device_id数组中各成员的id与i2c_client中的名字,找到设备 3、执行i2c_driver驱动中的probe

Expression Blend实例中文教程(2) - 界面快速入门
上一篇主要介绍Expression系列产品,另外概述了Blend的强大功能,本篇将用Blend 3创建一个新Silverlight项目,通过创建的过程,对Blend进行快速入门学习。 在开始使用Blend前,首先需要进行Silverlight的开发环境搭建&…
Lua基本语法-书写规范以及自带常用函数
Lua基本语法-书写规范和常用函数本文提供全流程,中文翻译。Chinar坚持将简单的生活方式,带给世人!(拥有更好的阅读体验 —— 高分辨率用户请根据需求调整网页缩放比例) 1String Operation —— 字符串操作2Table ——…

linux驱动:音频驱动(一)ALSA
一、【基础知识】 1、J2 《--HPR_OUTHPL_OUT 《-- U13(TLV320AIC3104IRHBR)的HPROUTHPLOUT 2、驱动源码 IPNC_RDK_V3.8.0.1/Source/ti_tools/ipnc_psp_arago/kernel/sound/soc/codecs/tlv320aic3x.c 3、依赖于I2C驱动 4、声卡驱动框架:…

秘籍 | 机器学习数据集网址大全
作者 | Will Badr译者 | Linstancy整理 | Jane出品 | AI科技大本营(ID:rgznai100)要找到一定特定的数据集可以解决各种机器学习问题,是一件很难的事情。越来越多企业或研究机构将自己的数据集公开,已经成为全球的趋势,…

为asa防火墙配置ssh登陆
由于最近事情超多,单位下发某些令人恶心的制度,今天突然说北京分公司和总公司之间要做***的连接,虽然俺是个CCNP,但是对于***来说接触的少之又少,并且工作繁忙,每天头大,北京分公司的安全ie同事…

70.nodejs操作mongodb
转自:https://www.cnblogs.com/whoamme/p/3467374.html 首先安装nodejs mongodb npm install mongodb var mongodb require(mongodb); var server new mongodb.Server(localhost, 27017, {auto_reconnect:true}); var db new mongodb.Db(mydb, server, {saf…

明晚8点公开课 | 用AI给旧时光上色!详解GAN在黑白照片上色中的应用
在改革开放40周年之际,百度联合新华社推出了一个刷屏级的H5应用——用AI技术为黑白老照片上色,浓浓的怀旧风勾起了心底快被遗忘的时光。想了解如何给老照片上色?本次公开课中,我们邀请到了百度高级研发工程师李超,他的…

linux驱动:音频驱动(二)ASoc
五、【ASoC声卡驱动框架】 1、ASoC将嵌入式设备的音频系统从软件层面划分为3个组件 1.1 codec驱动:音频编解码器驱动,与平台无关,实现音频控制项添加、音频接口实现、DAPM(动态音频电源管理)、音频编解码器的IO功能 …

把32位的SharePoint服务器场迁移到64位, 应该怎么做?
总体步骤如下: 1. 迁移已经存在了的数据库服务器到新的数据库服务器. 先迁移这一层的目的是避免可能发生的一些由64位系统对32位系统执行查询或写入操作所引起的性能问题. 2. 迁移WFE服务器到64位环境下. 准备工作: 1. 重新编译已经存在的32位的应用程序和自定义的程序集(web p…

testem方便的web tdd 测试框架使用
备注:单元测试,对于日常的开发是比较重要的,testem 简化了我们的代码编写,以及运行。主要特性:a. 支持的测试框架有:jasmine quint mocha buster.js ,同时也包含一些其他的适配器,支…
linux驱动:音频驱动(三)ASoc之machine驱动及card初始化
一、machine驱动及card初始化

程序员老在改Bug,就不能一次改好吗?
作者丨伍杏玲来源 | 程序人生(ID:coder_life)程序员的日常三件事:写Bug、改Bug、背锅。连程序员都自我调侃道,为什么每天都在加班?因为我的眼里常含Bug。但是真的有这么多Bug要改吗?就不能一次改…

一场库文件的远程修复
一场库文件的远程修复系统环境RHEL 4.7一、原因:发现每天早上7点1分备份的数据库文件时间不对,登录上去后date下发现时间是正确。二、尝试解决:1)setup->Timezone configuration-> Asia/Shanghai保存后,发现由原…
linux驱动:音频驱动(四)ASoc之machine设备
linux驱动:音频驱动(四)ASoc之machine设备

Sql server Insert执行的秘密(下) 带外键的INSERT分析
2019独角兽企业重金招聘Python工程师标准>>> 这一篇分析一下带外键表的INSERT的例子。 本文所用的数据表结构如上图所示;其中Blog表上BlogID是自增的主键,并在CreateUserID和CreateTime列上分别建有两个非唯一索引。 我们要往Blog表中插入一…

熬夜写代码,不如换女装入GitHub获上千Star?
作者 | 琥珀出品 | AI科技大本营(ID: rgznai100)程序员如何以合规手段快速获得 GitHub 上千 Star?新年刚过,GitHub Trending 上一个名为“Dress”的开源项目迅速蹿红,并成功掀起了不少程序员及吃瓜群众的热议。项目地址…