jsp导出Excel功能的实现
借助POI的excel接口,可以方便得实现excel导出功能:
首先需要引入poi对应的jar包
1.前端jsp页面需要一个a链接。
web页面文件MIM类型的下载,只需要一个a元素,该a可以链到该文件在服务器端的实体路径,也可以链接到一个servelt,将该文件写到response的输出流中。其他的下载浏览器会自动帮助完成。
<a type="button" class="btn btn-warning" href='/WebTest/ExportExcel' id='export'>导出</a>
2,该链接对应的后台处理servlet代码实现
package com.bobo.servlet; import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStream;
import java.io.PrintWriter;
import java.io.UnsupportedEncodingException;
import java.net.URLEncoder;
import java.util.ArrayList;
import java.util.HashMap; import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse; import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFWorkbook; import com.bobo.helper.ExcelHelper;
import com.bobo.modal.ShitiModal;
import com.bobo.modal.XixiangModal; public class ExportExcel extends HttpServlet { /**
* The doGet method of the servlet. <br>
*
* This method is called when a form has its tag value method equals to get.
*
* @param request
* the request send by the client to the server
* @param response
* the response send by the server to the client
* @throws ServletException
* if an error occurred
* @throws IOException
* if an error occurred
*/
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException { process(request, response);
} /**
* The doPost method of the servlet. <br>
*
* This method is called when a form has its tag value method equals to
* post.
*
* @param request
* the request send by the client to the server
* @param response
* the response send by the server to the client
* @throws ServletException
* if an error occurred
* @throws IOException
* if an error occurred
*/
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException { process(request, response);
} @SuppressWarnings("deprecation")
private void process(HttpServletRequest request,
HttpServletResponse response) throws UnsupportedEncodingException {
request.setCharacterEncoding("utf-8");
response.setCharacterEncoding("utf-8"); response.reset();
response.setContentType("application/x-msexcel"); String fileName = URLEncoder.encode("巡查实体列表", "utf-8");
response.addHeader("Content-Disposition", "attachment; filename="
+ new String(fileName.getBytes("utf-8"), "ISO8859-1") + ".xls");
HSSFWorkbook wb = new HSSFWorkbook();
// 表头数足
String[] title = { "实体编号", "实体名称", "省", "市", "巡查人", "巡查结果", "巡查时间",
"细项名称", "巡查人", "巡查结果", "巡查时间", "不合格原因" };
ArrayList<ShitiModal> content = new ArrayList<ShitiModal>();
for (int i = ; i < ; i++) {
ShitiModal shiti = new ShitiModal();
shiti.setShitiCity("杭州");
shiti.setShitiName("二龙路基站");
shiti.setShitiNum("");
shiti.setShitiPerson("张三");
shiti.setShitiProvince("浙江");
shiti.setShitiResult("不合格");
shiti.setShitiTime("2015年4月28日");
// 填充细分项
ArrayList<XixiangModal> xixiangList = new ArrayList<XixiangModal>();
for (int j = ; j < ; j++) {
XixiangModal xixiang = new XixiangModal();
xixiang.setXixiangMember("张三");
xixiang.setXixiangName("开关电源");
xixiang.setXixiangReason("管道线路井内余线没有靠墙");
xixiang.setXixiangResult("不合格");
xixiang.setXixiangTime("2015年4月28日");
xixiangList.add(xixiang);
}
shiti.setXixiangList(xixiangList);
content.add(shiti);
}
ExcelHelper eHelper = new ExcelHelper();
// 生成excel中的一张表格
HSSFSheet sheet = eHelper.export(wb, "sheet1", title, content); // 直接存到服务器端
// FileOutputStream fileOut;
// try {
// fileOut = new FileOutputStream("workbook.xls");
// wb.write(fileOut);
// fileOut.close();
// } catch (Exception e) {
// // TODO Auto-generated catch block
// e.printStackTrace();
// }
// 写入输出流
try {
OutputStream os = response.getOutputStream();
wb.write(os);
os.flush();
os.close(); } catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} } }
3,相关实体类
package com.bobo.modal;
import java.util.ArrayList;
public class ShitiModal {
private String shitiNum;
private String shitiName;
private String shitiProvince;
private String shitiCity;
private String shitiPerson;
private String shitiTime;
private String shitiResult;
private ArrayList<XixiangModal> xixiangList;
public String getShitiPerson() {
return shitiPerson;
}
public void setShitiPerson(String shitiPerson) {
this.shitiPerson = shitiPerson;
}
public String getShitiTime() {
return shitiTime;
}
public void setShitiTime(String shitiTime) {
this.shitiTime = shitiTime;
}
public String getShitiResult() {
return shitiResult;
}
public void setShitiResult(String shitiResult) {
this.shitiResult = shitiResult;
}
public String getShitiNum() {
return shitiNum;
}
public void setShitiNum(String shitiNum) {
this.shitiNum = shitiNum;
}
public String getShitiName() {
return shitiName;
}
public void setShitiName(String shitiName) {
this.shitiName = shitiName;
}
public String getShitiProvince() {
return shitiProvince;
}
public void setShitiProvince(String shitiProvince) {
this.shitiProvince = shitiProvince;
}
public String getShitiCity() {
return shitiCity;
}
public void setShitiCity(String shitiCity) {
this.shitiCity = shitiCity;
}
public ArrayList<XixiangModal> getXixiangList() {
return xixiangList;
}
public void setXixiangList(ArrayList<XixiangModal> xixiangList) {
this.xixiangList = xixiangList;
}
}
ShitiModal
package com.bobo.modal;
public class XixiangModal {
private String XixiangName;
private String XixiangMember;
private String XixiangResult;
private String XixiangTime;
private String XixiangReason;
public String getXixiangName() {
return XixiangName;
}
public void setXixiangName(String xixiangName) {
XixiangName = xixiangName;
}
public String getXixiangMember() {
return XixiangMember;
}
public void setXixiangMember(String xixiangMember) {
XixiangMember = xixiangMember;
}
public String getXixiangResult() {
return XixiangResult;
}
public void setXixiangResult(String xixiangResult) {
XixiangResult = xixiangResult;
}
public String getXixiangTime() {
return XixiangTime;
}
public void setXixiangTime(String xixiangTime) {
XixiangTime = xixiangTime;
}
public String getXixiangReason() {
return XixiangReason;
}
public void setXixiangReason(String xixiangReason) {
XixiangReason = xixiangReason;
}
}
XixiangModal
4,ExcelHelper类
package com.bobo.helper; import java.util.ArrayList; import org.apache.poi.hssf.usermodel.HSSFCell;
import org.apache.poi.hssf.usermodel.HSSFCellStyle;
import org.apache.poi.hssf.usermodel.HSSFRow;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.hssf.util.HSSFColor;
import org.apache.poi.ss.util.CellRangeAddress; import com.bobo.modal.ShitiModal;
import com.bobo.modal.XixiangModal; public class ExcelHelper { public HSSFSheet export(HSSFWorkbook wb, String fileName, String[] title,
ArrayList<ShitiModal> content) {
// int cellNum = 5; //设置列数
/**
* 建立表格设置。
*/
HSSFSheet sheet = null;
try {
sheet = wb.createSheet(fileName); int columnSize = title.length;
HSSFRow row_one = sheet.createRow();
for (int i = ; i < columnSize; i++) {
HSSFCell cell = row_one.createCell(i);
cell.setCellValue(title[i]);
}
int curRow = ;
int endRow = ;
int temp = curRow;
for (int i = ; i < content.size(); i++) {
temp = curRow;
ShitiModal shiti = content.get(i);
int xixiangNum = content.get(i).getXixiangList().size();
endRow += xixiangNum;
for (; curRow < endRow; curRow++) {
// 设置需要合并的单元格部分
for (int k = ; k < ; k++) {
CellRangeAddress cra = new CellRangeAddress(curRow,
endRow - , k, k);
sheet.addMergedRegion(cra);
}
HSSFRow row = sheet.createRow(curRow);
if (curRow == temp) {
row.createCell().setCellValue(shiti.getShitiNum());
row.createCell().setCellValue(shiti.getShitiName());
row.createCell()
.setCellValue(shiti.getShitiProvince());
row.createCell().setCellValue(shiti.getShitiCity());
row.createCell().setCellValue(shiti.getShitiPerson());
row.createCell().setCellValue(shiti.getShitiResult());
row.createCell().setCellValue(shiti.getShitiTime());
}
// 开始添加细分
XixiangModal xixiang = shiti.getXixiangList().get(
curRow - temp);
row.createCell().setCellValue(xixiang.getXixiangName());
row.createCell().setCellValue(xixiang.getXixiangMember());
row.createCell().setCellValue(xixiang.getXixiangResult());
row.createCell().setCellValue(xixiang.getXixiangTime());
row.createCell().setCellValue(xixiang.getXixiangReason()); }
curRow = endRow;
} } catch (Exception ex) {
ex.printStackTrace();
}
return sheet;
} // end of export }
jsp导出Excel功能的实现的更多相关文章
- java、jsp导出excel功能备份
问题踩坑: ajax请求不能下载文件 必须这样: <a href="/media">点击下载Excel</a> 或者 location.href = '/m ...
- JSP导出Excel后身份证后三位为0
JSP导出Excel身份证号码超出Excel最大限制,用科学计数法表示,但后三位为0,修改方式: <style type="text/css">.txt { ...
- Atitit.导出excel功能的设计 与解决方案
Atitit.导出excel功能的设计 与解决方案 1.1. 项目起源于背景1 1.2. Js jquery方案(推荐)jquery.table2excel1 1.3. 服务器方案2 1.4. 详细 ...
- 项目笔记:导出Excel功能
1.前台这块: var ids=""; $.post("${basePath}/assets/unRegDeviceAction_getDeviceIds.do" ...
- 项目笔记:导出Excel功能分sheet页插入数据
导出Excel功能分sheet页处理数据: /*导出EXCEL*/ public void createExcel() { log.info("导出Excel功能已经启动-BEGIN&quo ...
- vue项目导出EXCEL功能
因为一些原因导出EXCEL功能必须前端来做,所以就研究了一下,在网上也找了一些文章来看,有一些不完整,我做完了就记录下来,供大家参考: 1.首先先安装依赖: npm install file-save ...
- Vue通过Blob对象实现导出Excel功能
不同的项目有不同的导出需求,有些只导出当前所显示结果页面的表格进入excel,这个时候就有很多插件,比如vue-json-excel或者是Blob.js+Export2Excel.js来实现导出Exc ...
- jsp导出excel
很多时候,我们都知道在java项目里面采用poi来导出excel很方便,但是如果你的项目采用的是jsp你可以用更简单的方法来导出.首先你要在顶部引入:<jsp:directive.page im ...
- dataTables的导出Excel功能
Datatables它是一款基于jQuery表格插件,钟情于它操作dom的灵活.做后台的同学想必使用它能事半功倍,而且交互强.容易扩展. 我也是最近要做公司后台界面,表格涉及的很多,所以考虑使用DT, ...
随机推荐
- Apache Spark源码走读之1 -- Spark论文阅读笔记
欢迎转载,转载请注明出处,徽沪一郎. 楔子 源码阅读是一件非常容易的事,也是一件非常难的事.容易的是代码就在那里,一打开就可以看到.难的是要通过代码明白作者当初为什么要这样设计,设计之初要解决的主要问 ...
- Javascript 笔记与总结(2-5)window 对象
浏览器 window 对象(BOM)是浏览器宿主对象,和 js 语言无关. [window 对象的方法] window.alert(message); window.confirm(message); ...
- unity3d 基于物理渲染的问题解决
最近1个月做了unity 次世代开发的一些程序方面的支持工作,当然也是基于物理渲染相关的,主要还是skyshop marmoset的使用吧,他算是unity4.x版本 PBR的优秀方案之一了但在使用以 ...
- MYSQL导入导出.sql文件
MYSQL导入导出.sql文件 一.MYSQL的命令行模式的设置:桌面->我的电脑->属性->环境变量->新建->PATH=“:path\mysql\bin;”其中p ...
- ExtJS笔记2 Class System
For the first time in its history, Ext JS went through a huge refactoring from the ground up with th ...
- 纯CSS制作三角(转)
原原文地址:http://www.w3cplus.com/code/303.html 原文地址:http://blog.csdn.net/dyllove98/article/details/89670 ...
- Scrapy入门教程
关键字:scrapy 入门教程 爬虫 Spider作者:http://www.cnblogs.com/txw1958/出处:http://www.cnblogs.com/txw1958/archive ...
- IN()
High Performance My SQL, Third Edition Consider the followingWHERE clause: WHERE eye_color IN('brown ...
- nrf51822裸机教程-PPI
Programmable Peripheral Interconnect即可编程外设互联 系统,该模块是51822 提供的一个特性. 目的是为了让51822 的外围模块可以不通过处理器而自动相互作用. ...
- gogs安装
1.下载gogs文件,如果图方便可以选择编译好的文件网址https://gogs.io/docs/installation/install_from_binary 2.gogs web运行gogs 3 ...