项目背景:

  项目需要导出样式复杂的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实现的更多相关文章

  1. React+后端实现导出Excle表格的功能

    最近在做一个基于React+antd前端框架的Excel导出功能,我主要在后端做了处理,根据以下步骤,可以很容易就实现导出Excel表格数据的功能. 在做这类导出文件的功能,其实,在后端进行处理,会更 ...

  2. 使导出excle文档实现ALT+Enter的效果()

    JAVA中输入什么转义字符,使导出excle文档实现ALT+Enter的效果?或者有没有其他方法可以实现. 20 JAVA中输入什么转义字符,使导出excle文档实现ALT+Enter的效果?或者有没 ...

  3. vue下载模板、导出excle

    1.下载模板是 下载模版比较简单,就是跳一个新的页面 2.导出excle 就是get请求,把自己要导出的参数一一拼接起来 }

  4. 扩展一个boot的插件—tooltip&做一个基于boot的表达验证

    在线演示 本地下载 (代码太多请查看原文) 加班,加班加班,我爱加班··· 我已经疯了,哦也. 这次发一个刚接触boot的时候用boot做的表单验证,我们扩展一下tooltip的插件,让他可以换颜色. ...

  5. js-jquery-插件开发(二)【最终插件是最后一个,中间是过程】

    二.通过$.fn 向jQuery添加新的方法 2.1.基本格式: $.fn.pluginName = function() { //your code goes here } 说明:在$.fn后面添加 ...

  6. php 导出excle的.csv格式的数据时乱码问题

    1.header('Content-Encoding: XXXX'); 有可能是编码问题:可以尝试UTF-8,GBK,GB2312,等编码格式 2.有可能是文件编码问题,虽然UTF-8不建议带BOM, ...

  7. NPOI导出Excle

    前端: <!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" con ...

  8. mac下导出JetBrains IDE Support插件给linux

    自从google被和谐以后,上google的store安装插件是如此的费劲,好在mac下的chrome已经装好了,直接导出给linux就可以 mac下chrome的插件目录为 ~/Library/Ap ...

  9. PHP原生EXCEL导出带样式无插件无乱码实现

    PHP原生EXCEL导出 经测试 带样式 无插件 无乱码,不需要引入任何插件,不需要修改任何编码 (使用时只需要修改引入php数据库配置文件.修改thead tbody中的数据即可.根据自己的需要去接 ...

随机推荐

  1. js中加“var”和不加“var”的区别

    JavaScript 拥有动态类型.这意味着相同的变量可用作不同的类型: var x // x 为 undefined var x = 6; // x 为数字 var x = "Bill&q ...

  2. 《Linux就该这么学》第二天课程

    秦时明月经典语录:很多人被命运安排,而我安排命运.——卫庄 今天介绍了VM 虚拟机的安装以及Linux系统的安装,还讲解了Linux内核 RPM:降低软件的安装难度 源代码+安装规则→将程序源代码与安 ...

  3. Python12/25--前端之BOM/DOM

    一.DOM 1. 什么是DOM 文档对象模型 Document Object Model 文档对象模型 是表示和操作 HTML和XML文档内容的基础API 文档对象模型,是W3C组织推荐的处理可扩展标 ...

  4. Reading | 《Python基础教程》第1次阅读

    目录 一.基础知识 1.数和表达式 浮点除法和整数除法 负数整除和取余 圆整 乘方运算 2.变量名 3.获取用户输入 4.模块 5.让脚本像普通程序一样 6.字符串 单.双引号 引号的转义 字符串拼接 ...

  5. Vuejs——(7)过渡(动画)

    版权声明:出处http://blog.csdn.net/qq20004604   目录(?)[+]   本篇资料来于官方文档: http://cn.vuejs.org/guide/transition ...

  6. MySQL基础--字符函数

    1.UPPER和UCASE返回字符串str,根据当前字符集映射(缺省是ISO-8859-1 Latin1)把所有的字符改变成大写.该函数对多字节是可靠的. 2.LOWER和LCASE返回字符串str, ...

  7. 【UNR #1】火车管理(主席树)

    [UNR #1]火车管理(主席树) 好好的代码被 \(extra\ test\) 卡常了...我就放一个目前最快的版本吧... 题意简化: 有 \(n\) 个栈,\(m\) 次操作. 将 \(x\) ...

  8. What does git fsck stand for?

    fsck -> File System ChecK https://stackoverflow.com/questions/21151945/what-does-git-fsck-stand-f ...

  9. Swift5 语言指南(二) 版本兼容性

    本书描述了Swift 5,它是Xcode 10.2中包含的Swift的默认版本.您可以使用Xcode 10.2构建以Swift 5,Swift 4.2或Swift 4编写的目标. 当您使用Xcode ...

  10. jsp页面跳转页面的几中方式(同步更新)

    1. 通过<a>标签跳转网页a) 通过<a>标签直接跳转b) 通过<a>标签调用JavaScript函数,然后再进行跳转 2. 通过表单形式跳转网页a) 通过表单跳 ...