完整教程:C#.NetCore NPOI 导出excel 单元格内容换行

news/2025/9/20 10:10:30/文章来源:https://www.cnblogs.com/lxjshuju/p/19102042

如果您喜欢此文章,请收藏、点赞、评论,谢谢,祝您快乐每一天。

在NPOI中实现Excel单元格内容换行,可经过以下手段建立,本文介绍代码,仅供参考。

方法介绍

‌1、设置自动换行样式‌

通过ICellStyle.WrapText = true属性开启单元格自动换行功能,同时建议设置对齐方式为居中以优化显示效果。

‌2、处理换行符‌

若内容含\n换行符,需确保单元格样式已启用自动换行,否则换行符会展示为空格。

对于HTML换行符<br>,可先替换为\n再赋值给单元格。

‌3、调整行高‌

自动换行后需手动调整行高以适应内容,可经过row.HeightInPoints属性设置(如原高度的2倍)。

C#示例代码如下:

using NPOI.SS.UserModel;
using NPOI.XSSF.UserModel;

public class ExcelExporter
{
public void ExportWithWrapText(string filePath)
{
// 创建工作簿
IWorkbook workbook = new XSSFWorkbook();
ISheet sheet = workbook.CreateSheet("Sheet1");

// 创建带换行样式
ICellStyle wrapStyle = workbook.CreateCellStyle();
wrapStyle.WrapText = true; // 关键设置
wrapStyle.Alignment = HorizontalAlignment.Center;
wrapStyle.VerticalAlignment = VerticalAlignment.Center;

// 创建行并设置内容
IRow row = sheet.CreateRow(0);
ICell cell = row.CreateCell(0);
cell.SetCellValue("第一行文本\n第二行文本"); // 使用\n换行
cell.CellStyle = wrapStyle;

// 调整行高
row.HeightInPoints = 2 * sheet.DefaultRowHeightInPoints;

// 保存文件
using (FileStream fs = new FileStream(filePath, FileMode.Create))
{
workbook.Write(fs);
}
}
}


4、完成要点说明

必须同时设置WrapText和行高才能正确显示多行内容。

支持依据程序生成的换行符或用户输入的ALT+ENTER换行符。

若内容来自HTML,需先将<br>转换为\n再赋值。

5、完整C# .NetCore 示例代码

using NPOI.SS.UserModel;
using NPOI.XSSF.UserModel;

public class ExcelExporter
{
public void ExportWithWrapText(string filePath)
{
IWorkbook workbook = new XSSFWorkbook();
ISheet sheet = workbook.CreateSheet("Sheet1");

// 创建带换行样式
ICellStyle wrapStyle = workbook.CreateCellStyle();
wrapStyle.WrapText = true; // 关键设置
wrapStyle.Alignment = HorizontalAlignment.Center;
wrapStyle.VerticalAlignment = VerticalAlignment.Center;

// 创建行并设置内容
IRow row = sheet.CreateRow(0);
ICell cell = row.CreateCell(0);
cell.SetCellValue("第一行文本\n第二行文本"); // 使用\n换行
cell.CellStyle = wrapStyle;

// 调整行高
row.HeightInPoints = 2 * sheet.DefaultRowHeightInPoints;

// 保存材料
using (FileStream fs = new FileStream(filePath, FileMode.Create))
{
workbook.Write(fs);
}
}
}

如果您喜欢此文章,请收藏、点赞、评论,谢谢,祝您快乐每一天。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/908250.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

resultMap和resultType

resultMap 和 resultType好的,这是一个非常核心的MyBatis面试题和日常开发中的关键知识点。resultMap 和 resultType 都用于指定SQL查询结果的返回类型,但它们的用法和能力有本质区别。 下面我用一个清晰的对比和示例…

RabbitMQ 幂等性, 顺序性 和 消息积压 - 详解

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

直播软件怎么开发,自适应两栏布局方式 - 云豹科技

直播软件怎么开发,自适应两栏布局方式html结构<body><div class="wrapper"><div class="left"></div><div class="right"></div></div><…

基于SpringBoot的足球论坛系统+论文示例参考 - 指南

基于SpringBoot的足球论坛系统+论文示例参考 - 指南2025-09-20 10:01 tlnshuju 阅读(0) 评论(0) 收藏 举报pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; disp…

resultMap和自定义映射结果形式(ResultMapManage)以及ResultMap Vs ResultType

resultMap和自定义映射结果形式(ResultMapManage)以及ResultMap Vs ResultType<resultMap id="ResultMapManage" type="com.javapandeng.po.Manage"><result property="id" …

嵌入式设备不能正常上网问题

问题描述 设置静态IP和默认网关,设备无法上网。尝试ping baidu.com 也无法ping通 解决方案 1.默认网关IP设置错了 默认网关IP = 路由器IP 当设备在当前的链路中找不到baidu的IP时,会把IP传输到路由器,路由器通过查找…

2、论文固定模板(背景过度结尾)

1、论文字数分配2、以上仅供参考,如有疑问,留言联系

go: 图片文件上传

一,代码 go //上传页面 func (ic *MediaController) Upload(c *gin.Context) {c.HTML(200, "upload.html", nil) }//接收上传,多张图片 func (ic *MediaController) Uploaded(c *gin.Context) {//得到form…

go: 生成缩略图

一,安装第三方库 $ go get -u github.com/disintegration/imaging go: downloading golang.org/x/image v0.0.0-20191009234506-e7c1f5e7dbb8 go: downloading golang.org/x/image v0.31.0 go: added github.com/disi…

git: 报错: fatal: 协议错误:错误的行长度字符串:This 或 fatal: protocol error: bad line length character: This

一,报错信息: fatal: 协议错误:错误的行长度字符串:This 或 fatal: protocol error: bad line length character: This 二,出现的原因: 我修改了git项目的remote地址,是因为gitolite服务换了一台服务器,报错的原…

jquery: Justified gallery

一,官网 官网: https://miromannino.github.io/Justified-Gallery/ github: https://github.com/miromannino/Justified-Gallery二,使用 引入: <link rel="stylesheet" href="/static/justified/j…

安装crmeb

一,官网: https://www.crmeb.com/xiazai 代码站: https://gitee.com/ZhongBangKeJi/CRMEB 安装参考文档地址: https://doc.crmeb.com/single_open/open_v54/20389 二,下载 用git命令下载 $ git clone https://gitee.…

gin: 打包模板文件、静态文件到二进制文件中

一,默认html模板不会打包到二进制文件中 如果二进制文件的当前目录下不包含html模板文件路径,会报错如下 $ ./mediabank [GIN-debug] [WARNING] Creating an Engine instance with the Logger and Recovery middlew…

gin: 判断是否ajax请求

一,代码 controller: //得到用户信息 func (ic *MediaController) User(c *gin.Context) {if c.Request.Header.Get("X-Requested-With") == "XMLHttpRequest" {c.JSON(http.StatusOK, gin.H{&qu…

gin: 静态文件

一,下载jquery 官网: https://jquery.com/ 从命令行下载: $ wget https://code.jquery.com/jquery-3.7.1.min.js 二,代码: 目录结构routes package routesimport ("github.com/gin-gonic/gin""mediab…

详细介绍:【论文精读】基于YOLOv3算法的高速公路火灾检测

详细介绍:【论文精读】基于YOLOv3算法的高速公路火灾检测pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consola…

产品设计

产品设计2025-09-20 在设计tab时,如果数据没有加载出来,要么不切tab高亮,如果想切tab高亮,就先显示空白(因为还没拿到数据),或者旧的数据(依据产品性质)。 为了避免因为网络卡,或者没卡,没找到数据时,tab切…

An Empirical Study on Commit Message Generation using LLMs via In-Context Learning 论文笔记

介绍 (1) 发表:ICSE25 (2) 背景 最近的一些工作研究了基于 LLM 的提交信息生成,然而目前尚不清楚 LLM 通过 ICL 在该领域的表现如何 (3) 贡献 本文对通过 ICL 使用 LLM 进行提交信息生成进行了实证研究,并创建了一个…

实用指南:人工智能学习:Transformer结构中的编码器层(Encoder Layer)

实用指南:人工智能学习:Transformer结构中的编码器层(Encoder Layer)pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family:…

vcpkg 安装依赖

vcpkg install nlohmann-json