.net导出excle无需任何插件,直接通过一个tablehtml实现
项目背景:
项目需要导出样式复杂的excl表格,主要是一些样式布局比较复杂
技术分析:
目前比较通用的实现方式有
1、借助微软的excle插件
2、通过NPOI插件实现
3、直接导出一个html(table),在输出头部指定文件输出类型
本次主要说的第3中实现方式,这样实现起来很方便,尤其是针对样式复杂的表格,就当写html一样可以实现复杂的显示逻辑
直接替代吗
后端:采用的一个一般处理程序:
namespace WebApplication3 {
/// <summary>
/// DownLoadExcle 的摘要说明
/// </summary>
public class DownLoadExcle : IHttpHandler {
public void ProcessRequest(HttpContext context) {
context.Response.ClearHeaders();
context.Response.Clear();
context.Response.AppendHeader("content-disposition", "attachment; filename=" + HttpUtility.UrlEncode(System.DateTime.Now.ToString("yyyyMMddHHmmss")+ ".xls", Encoding.UTF8));
// 在此处放置用户代码以初始化页面
context.Response.ContentType = "application/vnd.ms-excel";
// 从Content-Type header中去除charset设置
context.Response.ContentEncoding = Encoding.UTF8;//.GetEncoding("GB2312") .UTF8;//解决中文乱码之关键
// 关闭 ViewState
//EnableViewState = false;
// 把HTML写回浏览器
context.Response.Write("<meta http-equiv=\"content-type\" content=\"application/ms-excel; charset=UTF-8\"/>");
context.Response.Write(this.GetExcleDataHtml());
context.Response.Flush();
context.Response.Clear();
context.Response.End();
}
public bool IsReusable {
get {
return false;
}
}
/// <summary>
/// 获取需要导出的数据HTML字符串
/// </summary>
/// <returns></returns>
private string GetExcleDataHtml() {
StringBuilder sbReport = new StringBuilder();
sbReport.Append("<table border='1' cellpadding='0' cellspacing='0'>");
sbReport.Append("<tr>");
sbReport.Append("<th ><h4>Id</h4></th>");
sbReport.Append("<th style='width:200px;'><h4>姓名</h4></th>");
sbReport.Append("<th style='width:100px;'><h4>成绩</h4></th>");
sbReport.Append("</tr>");
for (int i = 0; i < 10; i++) {
sbReport.Append("<tr>");
sbReport.Append(string.Format("<td>{0}</td>", i + 1));
sbReport.Append(string.Format("<td>测试{0}</td>", i + 1));
sbReport.Append(string.Format("<td>{0}</td>", (i + 1) * 10));
sbReport.Append("</tr>");
}
sbReport.Append("</table>");
return sbReport.ToString();
}
}
}
前端代码:直接用的一个a标签,链接到下载的一般处理程序地址即可
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<title></title>
<meta charset="utf-8" />
</head>
<body>
<a href="DownLoadExcle.ashx">下载文件</a>
</body>
</html>
.net导出excle无需任何插件,直接通过一个tablehtml实现的更多相关文章
- React+后端实现导出Excle表格的功能
最近在做一个基于React+antd前端框架的Excel导出功能,我主要在后端做了处理,根据以下步骤,可以很容易就实现导出Excel表格数据的功能. 在做这类导出文件的功能,其实,在后端进行处理,会更 ...
- 使导出excle文档实现ALT+Enter的效果()
JAVA中输入什么转义字符,使导出excle文档实现ALT+Enter的效果?或者有没有其他方法可以实现. 20 JAVA中输入什么转义字符,使导出excle文档实现ALT+Enter的效果?或者有没 ...
- vue下载模板、导出excle
1.下载模板是 下载模版比较简单,就是跳一个新的页面 2.导出excle 就是get请求,把自己要导出的参数一一拼接起来 }
- 扩展一个boot的插件—tooltip&做一个基于boot的表达验证
在线演示 本地下载 (代码太多请查看原文) 加班,加班加班,我爱加班··· 我已经疯了,哦也. 这次发一个刚接触boot的时候用boot做的表单验证,我们扩展一下tooltip的插件,让他可以换颜色. ...
- js-jquery-插件开发(二)【最终插件是最后一个,中间是过程】
二.通过$.fn 向jQuery添加新的方法 2.1.基本格式: $.fn.pluginName = function() { //your code goes here } 说明:在$.fn后面添加 ...
- php 导出excle的.csv格式的数据时乱码问题
1.header('Content-Encoding: XXXX'); 有可能是编码问题:可以尝试UTF-8,GBK,GB2312,等编码格式 2.有可能是文件编码问题,虽然UTF-8不建议带BOM, ...
- NPOI导出Excle
前端: <!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" con ...
- mac下导出JetBrains IDE Support插件给linux
自从google被和谐以后,上google的store安装插件是如此的费劲,好在mac下的chrome已经装好了,直接导出给linux就可以 mac下chrome的插件目录为 ~/Library/Ap ...
- PHP原生EXCEL导出带样式无插件无乱码实现
PHP原生EXCEL导出 经测试 带样式 无插件 无乱码,不需要引入任何插件,不需要修改任何编码 (使用时只需要修改引入php数据库配置文件.修改thead tbody中的数据即可.根据自己的需要去接 ...
随机推荐
- IOS内存管理详解
一. 基本原理 1. 什么是内存管理 移动设备的内存极其有限,每个app所能占用的内存是有限制的 当app所占用的内存较多时,系统会发出内存警告,这时得回收一些不需要再使用的内存空 ...
- IntelliJ IDEA使用心得之Maven项目篇(转)
IntelliJ IDEA使用心得之Maven项目篇 今天和大家分享下,在IDEA中打开Maven项目的方法. 对于新版的IDEA可以直接打开Maven项目,但是对于旧版的IDEA需要使用Mave ...
- Spring Boot Actuator 使用
转载于:https://www.jianshu.com/p/af9738634a21 Spring Boot 的 Actuator 提供了很多生产级的特性,比如监控和度量Spring Boot 应用程 ...
- 6.装配Bean基于注解
1.注解:就是一个类,使用@注解名称 开发中:使用注解 取代 xml配置文件. @Component取代<bean class=""> @Component(" ...
- Hessian 使用例子
一.协议包(数据对象需要实现序列化接口,可以用于服务端接口.客户端调用服务之用) /** * */ package com.junge.demo.protocol.model; import java ...
- 8. Filters in ASP.NET MVC 5.0【ASP.NET MVC 5.0中的过滤器】
ASP.NET Filers用来在MVC框架的不同请求处理阶段,注入额外的逻辑.过滤器为横切关注点提供了一种方法(日志记录,授权,缓存). 在这篇文章中,我将会向你介绍MVC框架支持的各种不同种类过滤 ...
- 嵌入式小系统I2S接口调试总结
最近调试了I2S.由于芯片里面硬件配置出现了几个错误,着实也把我折腾了一番,不过,最终 还是把它搞定了.为了加深理解,就做个笔记吧,方面以后查找和学习. 定义:I²S或I2S(英语:Inter-IC ...
- centos7不小心删除了/etc/yum.repos.d/CentOS-Base.repo文件..........
一步小心使用rm -rf /etc/yum.repos.d/CentOS-Base.repo 删除了base.repo文件,导致使用yum安装时报错. 解决如下,使用阿里云的镜像: wget -O / ...
- 金三银四季来了!Java 面试题大放送,能答对70%就去BATJTMD试试~
摘要: 2019,相对往年我们会发现今年猎头电话少了,大部分企业年终奖缩水,加薪幅度也不如往年,选择好offer就要趁早,现在开始准备吧,刷一波Java面试题,能回答70%就去BATJTMD大胆试试~ ...
- [NOIP模拟赛] 序列
Description 给定一个1~n的排列x,每次你可以将x1~xi翻转.你需要求出将序列变为升序的最小操作次数.有多组数据. Input 第一行一个整数t表示数据组数. 每组数据第一行一个整数n, ...