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, ...
随机推荐
- Oracle 10g安装64位图解流程
1. 安装准备阶段 1.1 安装Oracle环境 本例使用X-Manager来实现与Linux系统的连接,本例使用的所有命令和操作都是在X-Manager下进行.X-Manager安装完成后的配置方法 ...
- NBUT 1457 Sona(莫队算法+离散化)
[1457] Sona 时间限制: 5000 ms 内存限制: 65535 K 问题描述 Sona, Maven of the Strings. Of cause, she can play the ...
- HTTP 笔记与总结(1 )Telnet 分别发送 HTTP GET 和 HTTP POST 请求
简化的说: WebService = HTTP 协议 + XML Rest = HTTP 协议 + Json 各种 API = HTTP 协议 + XML / Json 来实现 HTTP 请求信息格式 ...
- sql group by+字段
MySQL GROUP BY 语句 GROUP BY 语句根据一个或多个列对结果集进行分组. 在分组的列上我们可以使用 COUNT, SUM, AVG,等函数. 2.在group by的分组字段上,我 ...
- ThinkPHP验证码刷新随机数
貌似因为IE的内核不支持重复,,所以要加个随机数..在代码中,,发现火狐的也不行..加了随机数后就可以了 <label class="img"><img id=& ...
- Find命令搜索过去一段时间内修改过的文件
Find命令搜索过去一段时间内修改过的文件 服务器 kxjhwbb 12个月前 (10-22) 342℃ 0评论 有些时候我们需要查找一些最近修改过的文件,比如改着改着忘了自己改过什么= = ...
- 不绑架输入--document.getElementById("linkage_"+id_type+"_echo").value="";--联动
<script> function w_linkage(id_type) { var selected = $("#linkage_"+id_type+"_t ...
- hiho48 : 欧拉路·一
时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 小Hi和小Ho最近在玩一个解密类的游戏,他们需要控制角色在一片原始丛林里面探险,收集道具,并找到最后的宝藏.现在他们控制的 ...
- CC254x(cc2540/cc2541)的微信AirSync调试笔记
一.前言 本尊自诩为IOT小能手,一直没涉足蓝牙实在说不过去.刚好上个月底的时候计划做个BLE设备,这阵子利用业余时间自学了BLE协议栈,了解了GATT,磕磕绊绊完成CC254x(cc2540/cc2 ...
- wget ftp
今天操作远端机器的时候发现少一个安装包, 需要传到对方的机器上,还能使用通过的老办法,直接SSH连上去了,发现传的很慢, 只有40K的样子, 看时间还需要二个多小时就有点受不了了.想想有一台FTP服务 ...