java web将数据导出为Excel格式文件代码片段

网友投稿 226 2023-06-16


java web将数据导出为Excel格式文件代码片段

本文实例为大家分享了java web将数据导出为Excel格式文件的具体代码,供大家参考,具体内容如下

1、jsp代码

2、js代码

function getVerExcel() {

window.location.href = '/pms/jsp/version/getPrdVerListExcel?page='

+ $("#getPage").html() + '&key=' + $("#select").val();

}

3、java代码

/**

*

* Purpose :将产品版本列表导出为Excel文件

* @param req

* 请求

* @param resp

* 应答

* @param page

* 当前页数

* @param key

* 查询条件

* @return

*/

@RequestMapping("getPrdVerListExcel")

public void getExcel(HttpServletRequest req, HttpServletResponse resp, Integer page, String key) {

// 设置文件的mime类型

resp.setContentType("application/vnd.ms-excel");

// 得到所有的数据

List verList = prdVersionSer.getAllPrdVersion(key);

// 若没有数据,则给用户提示

if (verList.size() == 0) {

req.setAttribute("getFileMsg", "没有符合条件的信息!");

req.setAttribute("select", key);

try {

req.getRequestDispatcher("/jsp/version/ver_list.jsp").forward(req, resp);

} catch (Exception e) {

e.printStackTrace();

}

} else {

// 存储编码后的文件名

String name = "name";

// 存储文件名称

String n = "";

if (key != "") {

n = verList.get(0).getPrdName() + "的版本列表";

} else {

n = "产品版本列表";

}

try {

name = URLEncoder.encode(n, "utf-8");

} catch (UnsupportedEncodingException e1) {

e1.printStackTrace();

}

resp.setHeader("content-disposition",

"attachment;filename=" + name + ".xls;filename*=utf-8''" + name + ".xls");

System.out.println("key:" + key);

// 从session中删除saveExcelMsg属性

req.getSession().removeAttribute("saveExcelMsg");

// 定义一个输出流

ServletOutputStream sos = null;

// 创建一个工作簿

HSSFWorkbook wb = new HSSFWorkbook();

// 创建一个工作表

HSSFSheet sheet = null;

if (key != "") {

sheet = wb.createSheet(verList.get(0).getPrdName() + "的版本信息");

} else {

sheet = wb.createSheet("产品版本信息");

}

// 返回数据格式对象

// 从格式对象中获取对应日期格式的编号,如果格式不存在,该方法会为它生成新的编号

http:// HSSFDataFormat format = wb.createDataFormat();

short dfNum = format.getFormat("yyyy-mm-dd");

// 创建样式对象

CellStyle style = wb.createCellStyle();

// 设置数据格式

style.setDataFormat(dfNum);

// 创建第一行(表格标题)

HSSFRow row = sheet.createRow(0);

HSSFCell cell = row.createCell(0, HSSFCell.CELL_TYPE_STRING);

if (key != "") {

cell.setCellValue(verList.get(0).getPrdName() + "的产品版本列表");

} else {

cell.setCellValue("产品版本列表");

}

// 创建第二行(表头)

row = sheet.createRow(1);

cell = row.createCell(0, HSSFCell.CELL_TYPE_STRING);

cell.setCellValue("序号");

cell = row.createCell(1, HSSFCell.CELL_TYPE_STRING);

cell.setCellValue("产品名称");

cell = row.createCell(2, HSSFCell.CELL_TYPE_STRING);

cell.setCellValue("版本号");

cell = row.createCell(3, HSSFCell.CELL_TYPE_STRING);

cell.setCellValue("发布日期");

cell = row.createCell(4, HSSFCell.CELL_TYPE_STRING);

cell.setCellValue("版本类型");

cell = row.createCell(5, HSSFCell.CELL_TYPE_STRING);

cell.setCellValue("版本描述");

int num = 1;

// 遍历输出verList中的数据,将其存入Excel中

for (int i = 0; i < verList.size(); i++) {

row = sheet.createRow(i + 2);

// 写入序号

cell = row.createCell(0, HSSFCell.CELL_TYPE_NUMERIC);

cell.setCellValue(num);

num++;

// 写入产品名称

cell = row.createCell(1, HSSFCell.CELL_TYPE_STRING);

cell.setCellValue(verList.get(i).getPrdName());

// 写入版本号

cell = row.createCell(2, HSSFCell.CELL_TYPE_STRING);

cell.setCellValue(verList.get(i).getVerNo());

// 写入发布日期(日期格式做处理)

cell = row.createCell(3, HSSFCell.CELL_TYPE_STRING);

// 将样式应用于单元格

cell.setCellStyle(style);

cell.setCellValue(verList.get(i).getVerDate());

// 写入版本类型

cell = row.createCell(4, HSSFCell.CELL_TYPE_STRING);

cell.setCellValue(verList.get(i).getVerType());

// 写入版本描述

cell = row.createCell(5, HSSFCell.CELL_TYPE_STRING);

cell.setCellValue(verList.get(i).getVerDesc());

}

try {

// 保存到文件中

sos = resp.getOutputStream();

wb.write(sos);

} catch (Exception e) {

e.printStackTrace();

} finally {

if (sos != null) {

try {

sos.close();

} catch (IOException e) {

e.printStackTrace();

}

}

}

}

}


版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:java web上传文件和下载文件代码片段分享
下一篇:在 Angular2 中实现自定义校验指令(确认密码)的方法
相关文章

 发表评论

暂时没有评论,来抢沙发吧~