写一个关于使用NPOI实现一键导出,并在浏览器上面实现下载

2024-05-12 22:32

本文主要是介绍写一个关于使用NPOI实现一键导出,并在浏览器上面实现下载,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

实现效果如下:
在这里插入图片描述
浏览器直接请求我们服务端的文件;
具体步骤:
1.NPOI导入数据库文件,并存在服务器文件夹下面;
2.实现浏览器访问并且请求下载;

实现NPOI存储数据库文件到excel中

 public static void SaveExcel(string fileName,List<orderInfo> orderInfos){IWorkbook wb = new HSSFWorkbook();ISheet sheet = wb.CreateSheet("订单表");//数据名var row = sheet.CreateRow(sheet.LastRowNum);//创建标题行int i = 0;//获取到所有的功能属性,也就是映射list表属性PropertyInfo[] propertyInfos = typeof(orderInfo).GetProperties(); //获取其属性名字//遍历所有属性foreach (var property in propertyInfos){object[] obj = property.GetCustomAttributes(typeof(DescriptionAttribute), true); //获取属性里面的注解if (obj.Length > 0){//创建一列,为起始列row.CreateCell(i).SetCellValue(((DescriptionAttribute)obj[0]).Description); //向里面填充属性值i++;}}int j = sheet.LastRowNum +1;//用来做创建行的功能,一直往下添加int n = 0;//用来给每一列进行赋值操作,用来添加列数//给数据填充到表格中foreach (var orderInfo in orderInfos){n = 0;row = sheet.CreateRow(j++);//获取每一行的属性值var items = orderInfo.GetType().GetProperties();//获取其公共属性foreach(var itemPropSub in items){//走完以后要从每一行的头开始,进行增加,则要回0;var obj = itemPropSub.GetCustomAttributes(typeof(DescriptionAttribute), true);if (obj.Length > 0){row.CreateCell(n).SetCellValue(itemPropSub.GetValue(orderInfo, null) == null ? "":itemPropSub.GetValue(orderInfo, null).ToString());//给其添值,如果为空的话就是空值,否则转为字符串写入n++;}}}MemoryStream ms = new MemoryStream();//创建一个数据流进行数据的保存wb.Write(ms);ms.Flush();ms.Position = 0;//设置流的当前位置FileStream fileStream = new FileStream(fileName,FileMode.Create,FileAccess.ReadWrite,FileShare.ReadWrite);//写入数据ms.WriteTo(fileStream);ms.Close();ms.Dispose();fileStream.Close();wb.Close();}

数据库内容得先查询并保存到list表中:

public class orderInfo { [Description("订单编号")]public string orderId { get; set; }[Description("付款时间")]public string payTime { get; set; }[Description("用户支付状态")]public string userPayStatue { get; set; }[Description("站点支付状态")]public string sitePayStatue { get; set; }[Description("所有支付状态")]public string allPayStatue { get; set; }[Description("快递发货状态")]public string expressStatue { get; set; }
}

2.上面实现了保存数据到excel中;

3.实现浏览器请求文件并下载

//这边已经存好数据值了var nowTime = DateTime.Now.Ticks.ToString();string filePath = context.Server.MapPath("/excelAll/")+System.IO.Path.GetFileName("订单数据表_"+nowTime+".xls");SaveExcel(filePath, orderInfos);//进行本地的数据流读取FileInfo fi = new FileInfo(filePath);if (File.Exists(filePath)){context.Response.Clear();context.Response.Buffer = true; //设置<span style="color: rgb(51, 51, 51); line-height: 24px; white-space: pre-wrap;">输出页面是否被缓冲</span>context.Response.Charset = "GB2312"; //设置了类型为中文防止乱码的出现 context.Response.AppendHeader("Content-Disposition", String.Format("attachment;filename={0}", HttpUtility.UrlEncode("订单数据表_" + nowTime + ".xls"))); //定义输出文件和文件名 context.Response.AppendHeader("Content-Length", fi.Length.ToString());context.Response.ContentEncoding = Encoding.Default;context.Response.ContentType = "application/ms-excel";//设置输出文件类型为excel文件。 context.Response.WriteFile(fi.FullName);context.Response.Flush();context.Response.End();}

这样子就能实现上面导出的效果了;

这篇关于写一个关于使用NPOI实现一键导出,并在浏览器上面实现下载的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/983915

相关文章

中文分词jieba库的使用与实景应用(一)

知识星球:https://articles.zsxq.com/id_fxvgc803qmr2.html 目录 一.定义: 精确模式(默认模式): 全模式: 搜索引擎模式: paddle 模式(基于深度学习的分词模式): 二 自定义词典 三.文本解析   调整词出现的频率 四. 关键词提取 A. 基于TF-IDF算法的关键词提取 B. 基于TextRank算法的关键词提取

使用SecondaryNameNode恢复NameNode的数据

1)需求: NameNode进程挂了并且存储的数据也丢失了,如何恢复NameNode 此种方式恢复的数据可能存在小部分数据的丢失。 2)故障模拟 (1)kill -9 NameNode进程 [lytfly@hadoop102 current]$ kill -9 19886 (2)删除NameNode存储的数据(/opt/module/hadoop-3.1.4/data/tmp/dfs/na

Hadoop数据压缩使用介绍

一、压缩原则 (1)运算密集型的Job,少用压缩 (2)IO密集型的Job,多用压缩 二、压缩算法比较 三、压缩位置选择 四、压缩参数配置 1)为了支持多种压缩/解压缩算法,Hadoop引入了编码/解码器 2)要在Hadoop中启用压缩,可以配置如下参数

Makefile简明使用教程

文章目录 规则makefile文件的基本语法:加在命令前的特殊符号:.PHONY伪目标: Makefilev1 直观写法v2 加上中间过程v3 伪目标v4 变量 make 选项-f-n-C Make 是一种流行的构建工具,常用于将源代码转换成可执行文件或者其他形式的输出文件(如库文件、文档等)。Make 可以自动化地执行编译、链接等一系列操作。 规则 makefile文件

hdu1043(八数码问题,广搜 + hash(实现状态压缩) )

利用康拓展开将一个排列映射成一个自然数,然后就变成了普通的广搜题。 #include<iostream>#include<algorithm>#include<string>#include<stack>#include<queue>#include<map>#include<stdio.h>#include<stdlib.h>#include<ctype.h>#inclu

AI一键生成 PPT

AI一键生成 PPT 操作步骤 作为一名打工人,是不是经常需要制作各种PPT来分享我的生活和想法。但是,你们知道,有时候灵感来了,时间却不够用了!😩直到我发现了Kimi AI——一个能够自动生成PPT的神奇助手!🌟 什么是Kimi? 一款月之暗面科技有限公司开发的AI办公工具,帮助用户快速生成高质量的演示文稿。 无论你是职场人士、学生还是教师,Kimi都能够为你的办公文

使用opencv优化图片(画面变清晰)

文章目录 需求影响照片清晰度的因素 实现降噪测试代码 锐化空间锐化Unsharp Masking频率域锐化对比测试 对比度增强常用算法对比测试 需求 对图像进行优化,使其看起来更清晰,同时保持尺寸不变,通常涉及到图像处理技术如锐化、降噪、对比度增强等 影响照片清晰度的因素 影响照片清晰度的因素有很多,主要可以从以下几个方面来分析 1. 拍摄设备 相机传感器:相机传

【C++】_list常用方法解析及模拟实现

相信自己的力量,只要对自己始终保持信心,尽自己最大努力去完成任何事,就算事情最终结果是失败了,努力了也不留遗憾。💓💓💓 目录   ✨说在前面 🍋知识点一:什么是list? •🌰1.list的定义 •🌰2.list的基本特性 •🌰3.常用接口介绍 🍋知识点二:list常用接口 •🌰1.默认成员函数 🔥构造函数(⭐) 🔥析构函数 •🌰2.list对象

【Prometheus】PromQL向量匹配实现不同标签的向量数据进行运算

✨✨ 欢迎大家来到景天科技苑✨✨ 🎈🎈 养成好习惯,先赞后看哦~🎈🎈 🏆 作者简介:景天科技苑 🏆《头衔》:大厂架构师,华为云开发者社区专家博主,阿里云开发者社区专家博主,CSDN全栈领域优质创作者,掘金优秀博主,51CTO博客专家等。 🏆《博客》:Python全栈,前后端开发,小程序开发,人工智能,js逆向,App逆向,网络系统安全,数据分析,Django,fastapi

常用的jdk下载地址

jdk下载地址 安装方式可以看之前的博客: mac安装jdk oracle 版本:https://www.oracle.com/java/technologies/downloads/ Eclipse Temurin版本:https://adoptium.net/zh-CN/temurin/releases/ 阿里版本: github:https://github.com/