.net开发:NPOI生成excel文件到磁盘

源码实测可用

使用.net工具包NPOI,生成excel文件到本地磁盘。

实际项目中可以指定路径到服务器,把生成的文件存放到服务器指定目录。

controller层

        [HttpPost("ExportExcel")]public void ExportExcel(){_TestService.ExportToExcel();}

service层

        public void ExportToExcel() {String FileName = "D:\\learning\\yxl\\chinese\\2024年7月10日星期三.xlsx";var chineseWordList = this.WrapChineseWord();ExportExcelToDiskUtils<ChineseWord>.ExportToExcel(chineseWordList, FileName);}

NPOI工具类

using Newtonsoft.Json;
using NPOI.HPSF;
using NPOI.SS.Formula.Functions;
using NPOI.SS.UserModel;
using NPOI.XSSF.UserModel;
using System.Reflection;namespace Learning.Dotnet
{public class ExportExcelToDiskUtils<T>{public static void ExportToExcel(List<T> list, String FileName){var workbook = new XSSFWorkbook();var sheet = workbook.CreateSheet("Sheet1");IRow row1 = sheet.CreateRow(0);Type t = typeof(T);int cell = 0;var properties = t.GetProperties().Where(p => p.GetCustomAttribute<JsonPropertyAttribute>() != null).Select(p => p).ToList();foreach (var pro in properties){row1.CreateCell(cell).SetCellValue(pro.GetCustomAttribute<JsonPropertyAttribute>().PropertyName);cell++;}int row = 1;foreach (var item in list){cell = 0;IRow newRow = sheet.CreateRow(row);foreach (var pro in properties){var value = list[row - 1];newRow.CreateCell(cell).SetCellValue(Convert.ToString(pro.GetValue(value, null)));cell++;}row++;}// 导出到文件using (FileStream file = new FileStream(FileName, FileMode.Create, FileAccess.Write)){workbook.Write(file);}// 释放资源workbook.Close();}}
}

业务对象Model

using Newtonsoft.Json;namespace Learning.Models.Chinese
{public class ChineseWord{[JsonProperty(PropertyName = "field1")]public string field1 { get; set; }[JsonProperty(PropertyName = "field2")]public string field2 { get; set; }[JsonProperty(PropertyName = "field3")]public string field3 { get; set; }[JsonProperty(PropertyName = "field4")]public string field4 { get; set; }[JsonProperty(PropertyName = "field5")]public string field5 { get; set; }[JsonProperty(PropertyName = "field6")]public string field6 { get; set; }[JsonProperty(PropertyName = "field7")]public string field7 { get; set; }[JsonProperty(PropertyName = "field8")]public string field8 { get; set; }[JsonProperty(PropertyName = "field9")]public string field9 { get; set; }[JsonProperty(PropertyName = "field10")]public string field10 { get; set; }}
}

数据封装

这里演示,直接mock数据,实际项目中,替换成自己的数据源即可。

        private List<ChineseWord> WrapChineseWord(){var chineseWord = new ChineseWord();chineseWord.field1 = "field1";chineseWord.field2 = "field2";chineseWord.field3 = "field3";chineseWord.field4 = "field4";chineseWord.field5 = "field5";chineseWord.field6 = "field6";chineseWord.field7 = "field7";chineseWord.field8 = "field8";chineseWord.field9 = "field9";chineseWord.field10 = "field10";var chineseWord2 = new ChineseWord();chineseWord2.field1 = "field1";chineseWord2.field2 = "field2";chineseWord2.field3 = "field3";chineseWord2.field4 = "field4";chineseWord2.field5 = "field5";chineseWord2.field6 = "field6";chineseWord2.field7 = "field7";chineseWord2.field8 = "field8";chineseWord2.field9 = "field9";chineseWord2.field10 = "field10";var chineseWordList = new List<ChineseWord>();chineseWordList.Add(chineseWord);chineseWordList.Add(chineseWord2);_Logger.LogInformation("chineseWordList:{}", JsonConvert.SerializeObject(chineseWordList));return chineseWordList;}

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

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

相关文章

redis中的事务和mysql中的事务有什么区别?

Redis和MySQL的事务在概念和特性上存在一些显著的区别&#xff1a; 1. 原子性&#xff08;Atomicity&#xff09;: - MySQL&#xff1a;事务具有原子性&#xff0c;即事务中的所有操作要么全部成功&#xff0c;要么全部失败&#xff0c;如果中途出现错误&#xff0c;整个事…

Linux内核 -- 虚拟化之virtqueue结构

Linux Kernel中的Virtqueue Virtqueue是Linux Kernel中用于实现Virtio设备的一个关键数据结构。Virtio是一种虚拟I/O设备标准&#xff0c;旨在简化虚拟化环境中虚拟设备与虚拟机之间的通信。Virtqueue则是实现这种通信的核心机制。以下是Virtqueue的一些关键点&#xff1a; V…

主流I/O模型总结(Linux Windows)

I/O复用模型(EPOLL) 模型思想&#xff1a;向内核注册需要监听的文件描述符&#xff0c;操作系统负责保存监视对象文件描述符&#xff0c;当有事件发生时,epoll_wait仅返回有事件发生的文件描述符数组 优点&#xff1a; 1.无需编写以监视状态为目的的针对所有文件描述符的循环语…

案例|水上水下一体化测量,为九寨沟精准把脉

​ 九寨沟&#xff0c;被誉为“人间仙境”&#xff0c;其湖群以独特的地理位置和优美的自然景观吸引着世界各地的游客&#xff0c;更是九寨沟生态系统中不可或缺的重要组成部分。因此&#xff0c;精准地掌握湖群的地形数据、水体分布及变化情况&#xff0c;能够揭示水下生态系…

【数据结构与算法基础】算法复杂度

欢迎光顾我的homepage 前言 算法就是定义良好的计算过程&#xff0c;它取一个活一组的值输入&#xff0c;并产生出一个或一组值作为输出。简单来说&#xff0c;算法就是一系列的计算步骤&#xff0c;用来将输入数据转化成输出结果。 一、算法效率 如何去衡量一个算法的好坏&am…

[C++]——同步异步日志系统(3)

同步异步日志系统 一、日志系统框架设计1.1模块划分1.1.1 日志等级模块1.1.2 日志消息模块1.1.3 日志消息格式化模块1.1.4 日志落地模块&#xff08;日志落地的方向是工厂模式&#xff09;1.1.5 日志器模块&#xff08;日志器的生成是建造者模式&#xff09;1.1.6 异步线程模块…

Android12上实现双以太网卡共存同时访问外网

具体实现如下&#xff1a; 修改main 表优先级到9999&#xff0c; 作用&#xff1a;eth0 eth1 访问 不去teardown 低分数网线 diff --git a/service/src/com/android/server/ConnectivityService.java b/service/src/com/android/server/ConnectivityService.java index 418e…

Ubuntu 22.04 设置swap交换空间

经常爆内存&#xff0c;导致很多应用没有办法一直正常运行&#xff0c;可以通过设置swap来缓解一下&#xff0c;虽然和内存的速度无法媲美&#xff0c;但是能一定程度缓解一下问题。 一、查看当前分区 查看当前系统的swap大小 free -m 二、关闭现有的swap分区 将/etc/fstab…

CUDA Kernel调试与优化--背景知识扫盲(LLM生成)

CUDA Kernel调试与优化–背景知识扫盲(LLM生成) 对于使用CUDA进行调试与性能优化&#xff0c;官方提供了丰富的参考资料和工具。以下是一些关键资源&#xff0c;可以帮助你更好地调试和优化CUDA代码&#xff1a; 官方文档和指南 CUDA Toolkit Documentation URL: CUDA Toolk…

强化学习总结(有具体代码实现)

文章目录 第一部分 强化学习基础第1章 强化学习概述1.1 强化学习概念1.2 强化学习的环境1.3 强化学习的目标1.4 强化学习的数据 第2章 多臂老虎机问题&#xff08;MAB问题&#xff09;2.1 问题描述2.1.1 问题定义2.1.2 形式化描述2.1.3 累积懊悔2.1.4 估计期望奖励 2.2 解决方法…

CSS 【详解】CSS 函数(含 calc,min,max,clamp,cubic-bezier,env,steps 等)

函数描述CSS 版本attr()返回选择元素的属性值。2calc()允许计算 CSS 的属性值&#xff0c;比如动态计算长度值。3cubic-bezier()定义了一个贝塞尔曲线(Cubic Bezier)。3hsl()使用色相、饱和度、亮度来定义颜色。3hsla()使用色相、饱和度、亮度、透明度来定义颜色。3linear-grad…

Bert 变种, T5模型

NLP-预训练模型-2019-NLU&#xff1a;DistilBERT【 BERT模型压缩】【模型大小减小了40%&#xff08;66M&#xff09;&#xff0c;推断速度提升了60%&#xff0c;但性能只降低了约3%】_distillbert-CSDN博客 https://zhuanlan.zhihu.com/p/673535548 大语言模型系列-T5_t5模型…

【机器学习】必会数学知识:一文掌握数据科学核心数学知识点(上),值得收藏~

核心数学知识点 1、引言2、数据科学必会数学知识2.1 线性代数2.2 微积分2.3 概率论2.4 数理统计2.5 随机过程2.6 数据分布2.7 贝叶斯统计2.8 线性回归2.9 逻辑回归2.10 矩阵分解2.11 主成分分析&#xff08;PCA&#xff09;2.12 奇异值分解&#xff08;SVD&#xff09; 3、总结…

【Git 入门】初始化配置与新建仓库

文章目录 前言配置git新建仓库仓库的概念创建仓库命令总结前言 在现代软件开发中,版本控制系统已经成为了不可或缺的工具。其中,Git 是最为广泛使用的版本控制系统之一。Git 不仅可以帮助我们管理和跟踪代码的变化,还可以方便地与他人协作。本文将介绍 Git 的基础知识,包括…

【人工智能大语言模型技术发展研究报告 2024】

文末‍有福利&#xff01; 人工智能作为引领新一轮科技产业革命的战略性技术和新质生产力重要驱动力&#xff0c;正在引发经济、社会、文化等领域的变革和重塑&#xff0c;2023 年以来&#xff0c;以 ChatGPT、GPT-4 为代表的大模型技术的出台&#xff0c;因其强大的内容生成及…

提升教师健康,聚焦智慧校园人事系统的职工体检功能

智慧校园人事管理系统内置的职工体检管理&#xff0c;是专为教职员工设计的一项健康管理创新实践&#xff0c;巧妙融合先进信息技术&#xff0c;致力于为教职工提供更加便捷、易懂且持续性的健康检查与管理支持。该服务从多个维度出发&#xff0c;全面呵护教职工的身心健康。 该…

给你的博客加上评论区

一个网站如果有评论功能&#xff0c;可以更好的和读者互动。VuePress 也有很多评论插件&#xff0c;这里简单介绍下&#xff0c;最后介绍本站所使用的 Twikoo。 大部分评论插件都是使用的 Github 或 Gitee 的 issue 功能&#xff0c;也就是用 issue 去存储评论&#xff1b;而 …

自然语言处理(NLP)与大语言模型(LLM) 主要差异

一、简述 NLP 和 LLM 技术是大规模分析和生成人类语言的核心。随着它们的日益普及&#xff0c;区分 LLM 与 NLP 变得越来越重要。 NLP 包含一套用于理解、操纵和生成人类语言的算法。自 20 世纪 50 年代诞生以来&#xff0c;NLP 已发展到分析文本关系的阶段。它使用词性标注、命…

脚本实现保留文本中特定字符之后的字符串

#目的背景 原始txt文本如下图 目的是为了去除序号&#xff0c;每行只单独呈现域名 手工删除漫长又麻烦&#xff0c;使用脚本快捷些 代码实现逻辑&#xff1a; 1.使用open函数打开文本&#xff0c;之后用变量lines存储文本的所有行&#xff0c;使用for循环&#xff0c;让变量te…

暑假学习计划怎么做 用待办计划软件安排更科学

暑期来临&#xff0c;无论是学生还是老师&#xff0c;做好暑期计划都至关重要。记得去年暑假&#xff0c;我给自己定下了阅读十本书的目标&#xff0c;却因为缺乏明确的计划&#xff0c;最后只草草读完了两本。而今年&#xff0c;我决定尝试一种新的方式——使用待办计划软件来…