java web 将数据导出为 Excel 格式文件代码片段
这里有新鲜出炉的 Java 函数式编程, 程序狗速度看过来!
Java 程序设计语言
java 是一种可以撰写跨平台应用软件的面向对象的程序设计语言, 是由 Sun Microsystems 公司于 1995 年 5 月推出的 Java 程序设计语言和 Java 平台 (即 JavaEE(j2ee), JavaME(j2me), JavaSE(j2se)) 的总称
这篇文章主要为大家详细介绍了 java web 将数据导出为 Excel 格式文件代码片段, 具有一定的参考价值, 感兴趣的小伙伴们可以参考一下
1jsp 代码
<input type="button" class="btn btn-info" onclick="getVerExcel();" value="导出为 Excel 文件" />
2js 代码
- function getVerExcel() {
- window.location.href = '/pms/jsp/version/getPrdVerListExcel?page='
- + $("#getPage").html() + '&key=' + $("#select").val();
- }
3java 代码
- /**
- *
- * 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 < Version > 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("产品版本信息");
- }
- // 返回数据格式对象
- // 从格式对象中获取对应日期格式的编号, 如果格式不存在, 该方法会为它生成新的编号
- 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();
- }
- }
- }
- }
- }
来源: http://www.phperz.com/article/18/0211/358695.html