利用Servlet导出Excel

-----因为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>

时间: 2024-08-10 17:17:22

利用Servlet导出Excel的相关文章

利用ultraGridExporter导出EXCEL表的方法

SaveFileDialog saveFileDialogExcel = new SaveFileDialog();saveFileDialogExcel.Filter = "Excel 文件(*.xls)|*.xls|Excel 文件(*.xlsx)|*.xlsx|所有文件(*.*)|*.*";if (saveFileDialogExcel.ShowDialog() == DialogResult.OK){    this.ultraGridExcel.Export(grid, sa

Excel导出学习之道:Java Web利用POI导出Excel简单例子

采用Spring mvc架构: Controller层代码如下 [java] view plaincopy @Controller public class StudentExportController{ @Autowired private StudentExportService studentExportService; @RequestMapping(value = "/excel/export") public void exportExcel(HttpServletReq

利用Extjs导出excel文件(转)

最近在做一个项目,需要在原先的表格的基础上导出excel文件,原先是想用java后台来实现这个功能,但是,后来发现,原来extjs也附带有导出excel表的功能,就在GridPanel的基础上导出,http://www.blogjava.net/rockblue1988/archive/2012/02/29/370977.html,这是我做的时候,参考的一篇网上的文章.具体的做法是,将extjsGridPanel里面的数据拿出来,转换成xml,然后发送给后台,后台响应之后,将数据输出为Excel

Springboot利用poi导出excel下载

Springboot利用poi导出excel下载 因为项目中之前的做法是用反射获取属性,所以demo中也是用的反射,我看网上很多文章都是存入一个List中,不知道这两种哪种更何合适一点,或者有什么更好的方法也请大佬们赐教. pom <dependency> <groupId>org.apache.poi</groupId> <artifactId>poi</artifactId> <version>3.13</version&g

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

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

利用poi导出Excel

import java.lang.reflect.Field;import java.lang.reflect.InvocationTargetException;import java.lang.reflect.Method;import java.sql.Date;import java.util.ArrayList;import java.util.List; import org.apache.poi.ss.usermodel.Cell;import org.apache.poi.ss.

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

代码: using System.Data; using System.IO; using NPOI.HSSF.UserModel; using NPOI.SS.UserModel; namespace ahwildlife.Utils { /// <summary> /// Excel工具类 /// 利用NPOI生成Excel /// </summary> public class ExcelUtil { #region 生成Excel /// <summary> /

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

最近用到HighChart作图,在图片导出时,出现了图片中中文乱码的问题,在网络上找了很多资料,但都没有解决,最后才发现了最容易被忽略的问题.具体见下. 由于之前有同事使用过HighChart,所以毫不犹豫了之前同事使用的方法:通过自己书写servlet,利用batik工具完成不同格式图片的导出,具体方法见下: @RequestMapping(value = "/save_image", method = RequestMethod.POST) public void saveImag

servlet导出Excel

package khservlet; import java.io.IOException;import java.io.PrintWriter;import java.sql.*; import javax.servlet.ServletException;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServlet