-----因为Excel可以打开HTML文件,因此可以利用页面的Form表单把页面中的table内容提交给Servlet,然后后台把提交上来的table内容转换成文件流的形式,并以下载的形式转给客户端,由此完成导出Excel功能。

效果:

<!--[endif]-->

Java代码

package com.mr;

import java.io.IOException;

import java.io.PrintWriter;

import javax.servlet.ServletException;

import javax.servlet.ServletOutputStream;

import javax.servlet.http.HttpServlet;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;

/**

* 利用Servlet导出Excel

* @author AndyChen

*

*/

public class ExportExcelServlet extends HttpServlet {

public void doGet(HttpServletRequest request, HttpServletResponse response)

throws ServletException, IOException {

doPost(request, response);

}

public void doPost(HttpServletRequest request, HttpServletResponse response)

throws ServletException, IOException {

request.setCharacterEncoding("UTF-8");//设置request的编码方式,防止中文乱码

String fileName ="导出数据";//设置导出的文件名称

StringBuffer sb = new StringBuffer(request.getParameter("tableInfo"));//将表格信息放入内存

String contentType = "application/vnd.ms-excel";//定义导出文件的格式的字符串

String recommendedName = new String(fileName.getBytes(),"iso_8859_1");//设置文件名称的编码格式

response.setContentType(contentType);//设置导出文件格式

response.setHeader("Content-Disposition", "attachment; filename=" + recommendedName + "\"");//

response.resetBuffer();

//利用输出输入流导出文件

ServletOutputStream sos = response.getOutputStream();

sos.write(sb.toString().getBytes());

sos.flush();

sos.close();

}

}

Jsp代码

<%@ page language="java" contentType="text/html; charset=UTF-8"

pageEncoding="UTF-8"%>

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

<html>

<head>

<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">

<title>导出Excel</title>

<script type="text/javascript">

function test(){

document.getElementById("tableInfo").value=document.getElementById("table").innerHTML;

}

</script>

<style>

body{font-family:宋体;font-size:11pt}

</style>

</head>

<body>

<form action="<%=request.getContextPath()%>/servlet/ExportExcelServlet" method="post">

<span id="table">

<table bgcolor="#EEECF2" bordercolor="#A3B2CC" border="1" cellspacing="0">

<tr><th>学号</th><th>姓名</th><th>科目</th><th>分数</th></tr>

<tr><td>10001</td><td>赵二</td><td>高数</td><td>82</td></tr>

<tr><td>10002</td><td>张三</td><td>高数</td><td>94</td></tr>

<tr><td>10001</td><td>赵二</td><td>线数</td><td>77</td></tr>

<tr><td>10002</td><td>张三</td><td>线数</td><td>61</td></tr>

</table>

</span><br/>

<input type="submit" name="Excel" value="导出表格" onclick="test()"/>

<input type="hidden" id="tableInfo" name="tableInfo" value=""/>

</form>

</body>

</html>

利用Servlet导出Excel的更多相关文章

  1. 利用PHPExcel导出excel 以及利用js导出excel

    导出excel的方法output_excel需要依赖PHPExcel 导出csv的方法csv_export不需要 <?php /** * @author ttt */ class ExcelCo ...

  2. struts2中利用POI导出Excel文档并下载

    1.项目组负责人让我实现这个接口,因为以前做过类似的,中间并没有遇到什么太困难的事情.其他不说,先上代码: package com.tydic.eshop.action.feedback; impor ...

  3. jsp+servlet 导出Excel表格

    1.项目的目录结构 2.创建一个用户类,下面会通过查询数据库把数据封装成用户实例列表 package csh.entity; /** * @author 悦文 * @create 2018-10-24 ...

  4. 利用poi导出Excel

    import java.lang.reflect.Field;import java.lang.reflect.InvocationTargetException;import java.lang.r ...

  5. 利用npoi导出Excel

    npoi库是当下最流行的处理Excel.Word.PPT等Office文件格式 npoi的下载地址:http://npoi.codeplex.com/ npoi的官方学习地址: http://www. ...

  6. C#利用NPOI导出Excel类(简单版)

    代码: using System.Data; using System.IO; using NPOI.HSSF.UserModel; using NPOI.SS.UserModel; namespac ...

  7. 使用Aspose.Cells利用模板导出Excel(C#)

    前言 随着互联网的流行,web项目逐渐占据主流.我相信大部分人开发项目的过程中都写过上传以及导出Excel和Word的功能,本文仅讨论导出Excel.C#中有很多第三方组件支持导出Excel,比如:N ...

  8. HighChart利用servlet导出中文PNG图片乱码问题解决

    最近用到HighChart作图,在图片导出时,出现了图片中中文乱码的问题,在网络上找了很多资料,但都没有解决,最后才发现了最容易被忽略的问题.具体见下. 由于之前有同事使用过HighChart,所以毫 ...

  9. 利用ExtJS导出Excel

    Ext.ns("Msp.Component"); //config = { // fileName : "净值及头寸核对", // exportDate : & ...

随机推荐

  1. 【原】iOS学习之极光推送

    一.极光推送工程端 1.下载SDK 极光推送是一个推送消息的第三方,SDK下载:https://www.jpush.cn/common/products 集成压缩包内容:包名为JPush-iOS-SD ...

  2. PK淘宝BUY+,京东推出AR购物应用JD Dream

        今年双十一淘宝推出了虚拟现实VR购物"BUY+",用户可以在虚拟环境中选购商品.那作为竞争对手的京东将使出什么绝招呢?在近日上海举办的谷歌开发者大会上得到了答案.会上京东推 ...

  3. 【NOI2016】优秀的拆分 题解(95分)

    题目大意: 求一个字符串中形如AABB的子串个数. 思路: 用哈希做到O(1)判断字符串是否相同,O($n^2$)预处理,ans[i]为开头位置为i的形如AA的子串个数.再用O($n^2$)枚举出AA ...

  4. 发布mvc报错:403.14-Forbidden Web 服务器被配置为不列出此目录的内容

    有两个地方需要配置: 1.web.config中的节点: <system.webServer> <validation validateIntegratedModeConfigura ...

  5. JS开发HTML5游戏《神奇的六边形》(一)

    近期出现一款魔性的消除类HTML5游戏<神奇的六边形>,今天我们一起来看看如何通过开源免费的青瓷引擎(www.zuoyouxi.com)来实现这款游戏. (点击图片可进入游戏体验) 因内容 ...

  6. 在javascrit中怎样来刷新页面

    a页面里iframe了个b页面,我想实现在b页面里一个按钮,一按就刷新a页面,也就是父页面,不是只刷新iframe里面的b页面 哦~ 请问b页面里的<input type="butto ...

  7. jQuery全屏滚动插件fullPage.js

    github https://github.com/alvarotrigo/fullPage.js demo http://alvarotrigo.com/fullPage/ 脚手架 <link ...

  8. 完成对数据库的CRUD操作

    PS:查询相对复杂,要处理结果集,增删改则不用. package it.cast.jdbc; import java.sql.Connection; import java.sql.ResultSet ...

  9. linux kernel链表

    参考: http://blog.csdn.net/echoisland/article/details/7079943

  10. mysql实现分组和组内序号

    SELECT CASE WHEN @mid = t.PAY_TIME THEN ELSE END SEQ, @mid := t.PAY_TIME, t.AMOUNTS, t.CHARGE_PRICE, ...