使用Apache POI技术把数据库中的数据导入Excel表
2018-01-03 16:22
447 查看
首先还是导入需要的jar包,上一篇博客里有
有两种实现方法
方法一,
第一步:查询所有的分区数据
第二步:使用POI将数据写到Excel文件中
第三步:使用输出流进行文件下载
方法二,
第一步:查询所有的分区数据
第二步:查询结束进行页面跳转,在跳转的页面进行文件下载。
需要注意,使用方法二要保证电脑上有Microsoft Excel软件,否则可能会下载失败。
有两种实现方法
方法一,
第一步:查询所有的分区数据
第二步:使用POI将数据写到Excel文件中
第三步:使用输出流进行文件下载
/** * 分区数据导出功能 * @throws IOException */ public String exportXls() throws IOException{ //第一步:查询所有的分区数据 List<Subarea> list = subareaService.findAll(); //第二步:使用POI将数据写到Excel文件中 //在内存中创建一个Excel文件 HSSFWorkbook workbook = new HSSFWorkbook(); //创建一个标签页 HSSFSheet sheet = workbook.createSheet("分区数据"); //创建标题行 HSSFRow headRow = sheet.createRow(0); headRow.createCell(0).setCellValue("分区编号"); headRow.createCell(1).setCellValue("开始编号"); headRow.createCell(2).setCellValue("结束编号"); headRow.createCell(3).setCellValue("位置信息"); headRow.createCell(4).setCellValue("省市区"); for (Subarea subarea : list) { HSSFRow dataRow = sheet.createRow(sheet.getLastRowNum() + 1); dataRow.createCell(0).setCellValue(subarea.getId()); dataRow.createCell(1).setCellValue(subarea.getStartnum()); dataRow.createCell(2).setCellValue(subarea.getEndnum()); dataRow.createCell(3).setCellValue(subarea.getPosition()); dataRow.createCell(4).setCellValue(subarea.getRegion().getName()); } //第三步:使用输出流进行文件下载(一个流、两个头) String filename = "分区数据.xls"; String contentType = ServletActionContext.getServletContext().getMimeType(filename); ServletOutputStream out = ServletActionContext.getResponse().getOutputStream(); ServletActionContext.getResponse().setContentType(contentType); //获取客户端浏览器类型 String agent = ServletActionContext.getRequest().getHeader("User-Agent"); filename = FileUtils.encodeDownloadFilename(filename, agent); ServletActionContext.getResponse().setHeader("content-disposition", "attachment;filename="+filename); workbook.write(out); return NONE; }附:FileUtils类
import java.io.IOException; import java.net.URLEncoder; import sun.misc.BASE64Encoder; public class FileUtils { /** * 下载文件时,针对不同浏览器,进行附件名的编码 * * @param filename * 下载文件名 * @param agent * 客户端浏览器 * @return 编码后的下载附件名 * @throws IOException */ public static String encodeDownloadFilename(String filename, String agent) throws IOException { if (agent.contains("Firefox")) { // 火狐浏览器 filename = "=?UTF-8?B?" + new BASE64Encoder().encode(filename.getBytes("utf-8")) + "?="; filename = filename.replaceAll("\r\n", ""); } else { // IE及其他浏览器 filename = URLEncoder.encode(filename, "utf-8"); filename = filename.replace("+"," "); } return filename; } }
方法二,
第一步:查询所有的分区数据
第二步:查询结束进行页面跳转,在跳转的页面进行文件下载。
//查询所有 public String findAll() throws IOException{ subs=ss.findAll(); return "findAll"; }跳转后的jsp页面
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> <!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>Insert title here</title> </head> <% response.setContentType("application/vnd.ms-excel");/*作用是使客户端浏览器,区分不同种类的数据,并根据不同的MIME调用浏览器内不同的程序嵌入模块来处理相应的数据。 */ response.setHeader("Content-Disposition", "inline;filename=excel.xls");/*设置响应头信息,设定传送到前端浏览器时的文档名为excel.xls,让前端浏览器以为接收到一个excel文档 */ %> <body> <table> <thead> <tr></tr> </thead> <tbody> <c:forEach items="${subs }" var="sub"> <tr> <td>${sub.id }</td> <td>${sub.decidedzone }</td> <td>${sub.region.city }</td> <td>${sub.addresskey }</td> <td>${sub.endnum }</td> <td>${sub.single }</td> <td>${sub.position }</td> </tr> </c:forEach> </tbody> </table> </body> </html>
需要注意,使用方法二要保证电脑上有Microsoft Excel软件,否则可能会下载失败。
相关文章推荐
- 使用Apache POI技术把Excel表中的数据导入数据库
- php中使用ExcelFileParser处理excel获得数据(可作批量导入到数据库使用)
- SSM框架,使用POI技术实现简单Excel表导入数据库
- Java 使用poi把数据库中数据导入Excel的解决方法
- [置顶] 使用jxls技术导入Excel模版数据
- 使用Apache POI创建Excel,并从数据库中读取数据写入到Excel文件中
- Java中使用Apache POI实现数据的Excel导入和导出
- JAVA实现数据库数据导入/导出到Excel(POI技术)
- php将Excel数据导入到数据库或程序中使用
- 使用pentaho工具将数据库数据导入导出为Excel
- 使用jxls技术导入Excel模版数据
- 使用NPOI将Excel文件的数据导入数据库
- 使用js导入excel和ajax传送数据回数据库保存的代码
- Apache POI实现EXcel的数据导入数据库
- 使用jxls技术导入Excel模版数据(转自其他博客)
- 使用VBA把EXCEL数据导入数据库
- 使用反射技术实现的导入Excel文件到数据库的公共方法
- 使用Apache POI创建Excel,并从数据库中读取数据写入到Excel文件中
- 使用ExcelFileParser处理excel获得数据 可作批量导入到数据库使用
- php中使用ExcelFileParser处理excel获得数据(可作批量导入到数据库使用)