要设置显示或者隐藏分类数据下的详细信息,在便于数据查看、管理的同时也使文档更具美观性。那么,在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. Linux命令: 编辑模式移动光标

    敲命令按以下顺序 ①vim filename ②e ③i ④ESC 移动光标 0 (零):将光标移动到行的起始处. $:将光标移动到行的末尾处. H:将光标移到当前窗口(而非全文)的第一行起始处. M ...

  2. Python中*args和**kwargs的区别

    (注:本文部分内容摘自互联网,由于作者水平有限,不足之处,还望留言指正.) 中秋的夜,微凉,但却始终看不见月亮. 我想,它一定是害羞了,悄悄的躲到了乌云的后面. 嗯,就是这样,我真是太TM机智了. 正 ...

  3. python 用正则表达式把”0102030405”分成5组('0', '1'), ('0', '2'), ('0', '3'), ('0', '4'), ('0', '5')

    把”0102030405”分成5组('0', '1'), ('0', '2'), ('0', '3'), ('0', '4'), ('0', '5') re.findall(r"(\d)(\ ...

  4. python excel操作单元格复制和读取的两种方法

    操作单元格 新建一个sheet, 单元格赋值(两种方法) 单元格A1赋值为’xiaxiaoxu’ 单元格A2赋值为‘xufengchai’ 打印A1和A2单元格的值(两种方法) #coding=utf ...

  5. idea生成springboot jpa的实体对象

    在idea的database里面添加上数据库 File-->Project Structure Modules--->点击加号----->选择JPA  选择确认之后再主面板上就会出现 ...

  6. 来了解一下Ajax是什么?Ajax的原理?Ajax与传统Web比较?Ajax的优缺点?Ajax的Post与Get比较

    一.什么是Ajax Ajax(Asynchronous Java and XML的缩写)是一种异步请求数据的web开发技术,对于改善用户的体验和页面性能很有帮助.简单地说,在不需要重新刷新页面的情况下 ...

  7. csharp编写界面,opencv编写类库,解决 Pinvoke过程中的参数传递和平台调用问题

        使用csharp 编写winform程序,不仅速度快,而且容易界面美化并找到其他类库的支持:而使用 opencv编写图形图像处理程序,是目前比较流行,而且高效的一种方法.如果需要将两者结合,需 ...

  8. 20145327 《网络对抗》逆向及BOF基础实践

    20145327 <网络对抗>逆向及BOF基础实践 实践目标 本次实践的对象是一个名为pwn1的linux可执行文件. 该程序正常执行流程是:main调用foo函数,foo函数会简单回显任 ...

  9. 20145208 蔡野 《网络对抗》Exp4 恶意代码分析

    20145208 蔡野 <网络对抗>Exp4 恶意代码分析 问题回答 总结一下监控一个系统通常需要监控什么.用什么来监控. 监控一个系统通常需要监控这个系统的注册表,进程,端口,服务还有文 ...

  10. 【前端】Vue.js实现实例搜索应用

    实例搜索应用 实现效果: 实现代码与注释: <!DOCTYPE html> <html> <head> <title>实例搜索</title> ...