要设置显示或者隐藏分类数据下的详细信息,在便于数据查看、管理的同时也使文档更具美观性。那么,在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文件夹下查看生成的文档)

效果截图:

完整代码:

using System;

using System.Drawing;

using Spire.Xls;

namespace MultilevelGroup_XLS

{

class Program

{

static void Main(string[] args)

{

//创建一个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);

System.Diagnostics.Process.Start("output.xlsx");

}

}

}

(编辑:雷林鹏 来源:网络)

[.NET开发] C# 如何创建Excel多级分组的更多相关文章

  1. C# 如何创建Excel多级分组

    在Excel中如果能够将具有多级明细的数据进行分组显示,可以清晰地展示数据表格的整体结构,使整个文档具有一定层次感.根据需要设置显示或者隐藏分类数据下的详细信息,在便于数据查看.管理的同时也使文档更具 ...

  2. android开发使用jxl创建Excel

    这周水了几天,今天把博客赶上,找找状态. 周五的时候终于完成了课堂测试第二阶段,主要的难点就是生成Excel表并将填写的数据插入到Excel表中. 一.jxl使用 1.创建或读取一个工作薄 Workb ...

  3. 【基于WinForm+Access局域网共享数据库的项目总结】之篇二:WinForm开发扇形图统计和Excel数据导出

    篇一:WinForm开发总体概述与技术实现 篇二:WinForm开发扇形图统计和Excel数据导出 篇三:Access远程连接数据库和窗体打包部署 [小记]:最近基于WinForm+Access数据库 ...

  4. Excel催化剂开源第4波-ClickOnce部署要点之导入数字证书及创建EXCEL信任文件夹

    Excel催化刘插件使用Clickonce的部署方式发布插件,以满足用户使用插件过程中,需要对插件进行功能升级时,可以无痛地自动更新推送新版本.但Clickonce部署,对用户环境有较大的要求,前期首 ...

  5. 使用SPIRE.XLS来创建Excel 工作簿

               使用SPIRE.XLS来创建Excel 工作簿     概要 最近在研究 .NET 控件,使用这些控件在程序中可以快速低成本实现功能. 在这一篇中我们使用的控件是Spire.XL ...

  6. ADF_Desktop Integration系列2_ADF桌面集成入门之开发简单ADF Desktop Excel

    2013-05-01 Created By BaoXinjian

  7. VSTO之旅系列(二):创建Excel解决方案

    原文:VSTO之旅系列(二):创建Excel解决方案 本专题概要 引言 创建VSTO项目 Excel对象模型 创建Excel外接程序 创建Excel文档级自定义项 小结 一.引言 也许很多朋友都没有听 ...

  8. VSTO学习(三)——创建Excel解决方案

    四.创建Excel外接程序介绍完了Excel对象模型之后,我们就可以利用这些对象来对Excel文档进行操作了,下面就创建一个简单的Excel外接程序的.首先我们模拟一个需求,大多说软件在使用时都会弹出 ...

  9. 第二十章、QTableView与QStandardItemModel开发实战:展示Excel文件内容

    老猿Python博文目录 专栏:使用PyQt开发图形界面Python应用 老猿Python博客地址 一.概述 在前面<第十九章.Model/View开发:QTableView的功能及属性> ...

随机推荐

  1. python 打印输出至文件中, 'wt'读写文件方式,会把原文件内容清空

    会把原文件内容清空,写最新的 文件必须以文本模式打开,如果文件是二进制模式的话,打印会出错

  2. 又一国产855旗舰突然现身:支持5G

    12月28日消息,中国联通官方微博放出了vivo NEX 5G版样机.如图所示,该机搭载骁龙855移动平台及X50 5G调制解调器. 早在8月30日,vivo就宣布完成了面向商用5G智能手机的软硬件开 ...

  3. bzoj5470 / P4578 [FJOI2018]所罗门王的宝藏

    P4578 [FJOI2018]所罗门王的宝藏 设第$i$行上的值改变了$r1[i]$,第$j$列上的值改变了$r2[i]$ 显然密码$(i,j,c)=r1[i]+r2[j]$ 对于同一列上的两个密码 ...

  4. c++的友元类、方法及其益处

    在java中,我们知道除了public和private,protected外,还有默认的包可见性访问级别,虽然如此,很多时候出于早期设计缺陷的原因,我们需要访问一些包或者protected可见性级别的 ...

  5. 01: RabbitMQ

    目录: 1.1 RabbitMq与Redis队列对比 1.2 在win7 64位机上安装RabbitMQ 1.3 RabbitMQ消息分发轮询 与 持久化 1.4 RabbitMQ 设定某个队列里最大 ...

  6. java读书笔记二

    这是我的一些读书笔记: 我研究了一下面向对象: 面向对象符合人类看待事物的一般规律,对象的方法的实现细节是包装的,只有对象方法的实现者了解细节 我觉得面向过程是由过程.步骤.函数组成,过程是核心,面向 ...

  7. liunx查询进程下的线程

    问题:一个进程下面会启动多个线程,通过top命令可以查出某个进程cpu,内存使用情况等信息,但无法知道是哪个线程. 解决方法: 1. 用jstack打印出给定的java进程ID的Java堆栈信息(js ...

  8. 托管C++调用C#

    拿到了一个第三方demo,有dll,有.cpp..h,打开解决方案,如下图: 网上资料貌似很少,根据猜测: 这是使用托管C++来调用C#的方式. 过程: 1.先使用C#代码实现界面和功能,其实就是一个 ...

  9. fatal One or more refs for names blocks change upload

    前言 今天在提代码时,发现push不到gerrit仓库了,十分的奇怪,和同事沟通后发现,同事可以直接git push origin master而且也可以合并,都是没有问题的,但是就是在gerrit上 ...

  10. 论文笔记——NEURAL ARCHITECTURE SEARCH WITH REINFORCEMENT LEARNING

    论文地址:https://arxiv.org/abs/1611.01578 1. 论文思想 强化学习,用一个RNN学一个网络参数的序列,然后将其转换成网络,然后训练,得到一个反馈,这个反馈作用于RNN ...