NPOI 第二篇 设置样式与合并单元格

前言

上一篇NPOI的文章介绍了NPOI的下载、引用以及基本使用方法。本文将进一步讲解NPOI,给出了设置单元格样式以及合并单元格的代码示例。

上一篇博客《NPOI的下载、引用、基本使用》链接:

https://blog.csdn.net/wf824284257/article/details/77113691

开始

本文将通过一个简单的例子来讲解NPOI的单元格样式及合并单元格的方法。

所使用的测试数据如图:

############## 1

上图为 sql server 数据库中的表数据。在实际应用场景中,数据往往是通过查询数据库(DB)来获取的,但本文为了方便读者下载示例代码,该表数据将直接写死在代码里。本文示例代码项目可以从博主资源页下载,下载地址为:

https://download.csdn.net/download/wf824284257/10899002

我们需要将该表数据导出为excel文件下载,目标excel格式如下:

############### 2

下面将分步骤讲解如何做到这样的效果。

Step1. 表头单元格样式

表头样式设置水平居中、大小14、黄背景红字、红底线。参考代码如下:

//表头样式
ICellStyle headStyle = workbook.CreateCellStyle();
headStyle.Alignment = HorizontalAlignment.Center;
IFont font = workbook.CreateFont();
font.Boldweight = 20;
font.FontHeightInPoints = 14;
font.Color = HSSFColor.Red.Index;
headStyle.SetFont(font);
//以下三行为背景色
headStyle.FillForegroundColor = HSSFColor.Yellow.Index;
headStyle.FillPattern = FillPattern.Squares;
headStyle.FillBackgroundColor = HSSFColor.Yellow.Index;
//border
headStyle.BorderBottom = NPOI.SS.UserModel.BorderStyle.Medium;
headStyle.BottomBorderColor = HSSFColor.Red.Index;
Step2. 普通单元格样式

普通单元格样式设置水平居中、垂直居中、绿字。参考代码如下:

//普通单元格样式
ICellStyle bodyStyle = workbook.CreateCellStyle();
bodyStyle.Alignment = HorizontalAlignment.Center;
bodyStyle.VerticalAlignment = VerticalAlignment.Center;
IFont font1 = workbook.CreateFont();
font1.Color = HSSFColor.Green.Index;
font1.Boldweight = 20;
bodyStyle.SetFont(font1);
Step3. 合并行

合并行使用 ISheet.AddMergedRegion 方法来实现。对于本文示例,可以从第0列即id列入手,在对sheet的行进行遍历的基础上,对于具有相同id的行的前两列进行纵向合并。

参考代码如下:

//合并行
for(int i = 1; i < dt.Rows.Count + 1; i++)
{
    string value = sheet.GetRow(i).GetCell(0).StringCellValue;
    int end = i;
    //找到结束为止
    for(int j = i + 1; j < dt.Rows.Count + 1; j++)
    {
        string value1= sheet.GetRow(j).GetCell(0).StringCellValue;
        if (value != value1)
        {
            end = j - 1;
            break;
        }
        else if(value==value1 && j == dt.Rows.Count)
        {
            end = j;
            break;
        }
    }
    sheet.AddMergedRegion(new CellRangeAddress(i, end, 0, 0));
    sheet.AddMergedRegion(new CellRangeAddress(i, end, 1, 1));
    i = end;
}
Step4. 设置列宽

参考代码如下:

//列宽
sheet.SetColumnWidth(0, 20 * 256);
sheet.SetColumnWidth(1, 20 * 256);
sheet.SetColumnWidth(2, 20 * 256);
sheet.SetColumnWidth(3, 20 * 256);

至此,该excel的格式设置完毕。

结束

本文将通过一个简单的例子讲解了NPOI的单元格样式设置及单元格合并的方法。该示例代码项目目录如下图所示:

################ 3

该项目可以在博主资源页下载:

https://download.csdn.net/download/wf824284257/10899002

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值