要设置显示或者隐藏分类数据下的详细信息,在便于数据查看、管理的同时也使文档更具美观性。那么,在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. VS2010/MFC编程入门之四十二(MFC常用类:CString类)

    上一节鸡啄米讲了分割窗口的有关知识,本节开始讲解MFC的一些常用类,先来说说CString类. CString类简介 CString类作为MFC的常用类,当之无愧.可以这样说,只要是从事MFC开发,基 ...

  2. VS2010/MFC编程入门之三十三(常用控件:标签控件Tab Control 下)

    上一节中鸡啄米讲了标签控件知识的上半部分,本节继续讲下半部分. 标签控件的创建 MFC为标签控件的操作提供了CTabCtrl类. 与之前的控件类似,创建标签控件可以在对话框模板中直接拖入Tab Con ...

  3. Linux中Postfix虚拟用户及虚拟域(六)

    Postfix基于虚拟用户虚拟域的邮件架构 上图是一个几乎完整的邮件系统架构图,这里基于Mysql数据库进行用户认证,不管是Postfix.Dovecot.webmail都需要去Mysql数据库中进行 ...

  4. SP211 PRIMIT - Primitivus recurencis(欧拉回路)

    SP211 PRIMIT - Primitivus recurencis 欧拉回路 Warning: enormous Input/Output data 警告:巨大的输入/输出 经过若干(11)次提 ...

  5. C_Learning (4)

    / 预处理命令 / 宏定义 / 一般形式:#define 宏名 字符串 # 表示这是一条预处理命令 宏名是一个标识符,必须符合C语言标识符的规定 字符串可以是常数.表达式.格式化字符串等 / 注意: ...

  6. 20145225 《网络对抗》逆向及Bof基础实践

    实践目标 本次实践的对象是一个名为pwn1的linux可执行文件. 该程序正常执行流程是:main调用foo函数,foo函数会简单回显任何用户输入的字符串. 该程序同时包含另一个代码片段,getShe ...

  7. Android实践项目汇报(四)

    全国天气客户端 本周学习计划 添加修改功能,完成项目 实际完成情况 1.成功显示当天及后几天的天气信息 通过修改chaxun.java程序,比较JSON数据格式中JSONObject("to ...

  8. VS编译duilib项目时候的错误解决方法整理(转载)

    转载自:http://blog.csdn.net/x356982611/article/details/30217473 @1:找不到Riched20.lib 用everything等软件搜索下磁盘, ...

  9. 接口中带参方法,传入IB类型的数据

    不同的接口有不同的方法 不同的类有不同的作用 不同的作用产生不一样的效果 不同的效果让程序看似复杂,实际简单... 比如此程序,看似复杂,实际就那么点事: 谁生成了谁,谁设置了谁,谁传入了谁,谁被谁调 ...

  10. 【Android实验】组件通信Intent

    实验目的 [TOC] 了解使用Intent进行组件通信原理 掌握使用Intent启动Activity的方法 熟悉和掌握Android组件间通信的方式和技巧 实验要求 设计一个主Activity和一个子 ...