C# 如何创建Excel多级分组

简介: 在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 }
View Code

 

以上是关于设置Excel多级分组的全部操作步骤,如果对您有所帮助,欢迎转载(转载请注明出处)。

感谢阅读!

目录
相关文章
|
9月前
|
前端开发 C#
C# 基于NPOI+Office COM组件 实现20行代码在线预览文档(word,excel,pdf,txt,png)
C# 基于NPOI+Office COM组件 实现20行代码在线预览文档(word,excel,pdf,txt,png)
|
25天前
|
存储 SQL C#
C#实现Excel合并单元格数据导入数据集
C#实现Excel合并单元格数据导入数据集
|
8月前
|
C#
45【软件技术基础】C#调用NPOI插件对EXCEL进行处理
NPOI插件进行EXCEL表格处理,不依赖第三方软件,功能强大,使用简便。 C#调用NPOI插件进行EXCEL单个表和文件夹中批量表的处理。
141 1
|
4月前
|
XML JSON 数据处理
C# | 导出DataGridView中的数据到Excel、CSV、TXT
从DataGridView中导出数据到Excel、CSV、TXT是开发中非常常见的一种需求。本文将讲解如何高效的完成对这三种格式的单向导出。 倘若直接写三种格式的导出必定会产生大量的重复代码,而从表中获取结构化数据的思路是基本一致的,因此有一个思路是先将DataGridView中的数据转换为DataTable对象,再进一步导出成我们的目标格式。 本文将介绍如何将DataGridView中的数据转换为DataTable格式,并提供将DataTable转换为Excel、CSV、TXT三种格式的例子。
93 0
C# | 导出DataGridView中的数据到Excel、CSV、TXT
|
5月前
|
XML JSON 开发框架
盘点5个C#实用的Word、PPT、Excel、Mail第三方库
盘点5个C#实用的Word、PPT、Excel、Mail第三方库
80 0
|
6月前
|
C#
C#写入模板excel数据
C#写入模板excel数据
26 0
|
9月前
|
数据库 C#
C#,.net,winform导入Excel功能以及下载Excel文件到本地,并使用SqlBulkCopy把DataTable类型的数据写入到sqlserver数据库中
C#,.net,winform导入Excel功能以及下载Excel文件到本地,并使用SqlBulkCopy把DataTable类型的数据写入到sqlserver数据库中
215 0
|
10月前
|
C#
C#导出到Excel——无法嵌入互操作类型“Microsoft.Office.Interop.Excel.ApplicationClass”。请改用适用的接口。
C#导出到Excel——无法嵌入互操作类型“Microsoft.Office.Interop.Excel.ApplicationClass”。请改用适用的接口。
154 0
|
JSON 程序员 C#
一个基于C#开发的Excel转Json工具
一个基于C#开发的Excel转Json工具,比通过Office Excel组件访问数据性能提升100倍,支持界面、命令模式。
202 0
一个基于C#开发的Excel转Json工具