POI 导出
1.添加依賴
<dependency><groupId>org.apache.poi</groupId><artifactId>poi</artifactId><version>3.17</version></dependency>2.POI工具類
import java.io.UnsupportedEncodingException; import javax.servlet.http.HttpServletResponse; 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;public class PoiUtils {/*** 導(dǎo)出Excel* @param sheetName sheet名稱* @param title 標(biāo)題* @param values 內(nèi)容* @param wb HSSFWorkbook對象* @return*/public static HSSFWorkbook getHSSFWorkbook(String sheetName,String []title,String [][]values, HSSFWorkbook wb){// 第一步,創(chuàng)建一個(gè)HSSFWorkbook,對應(yīng)一個(gè)Excel文件if(wb == null){wb = new HSSFWorkbook();}// 第二步,在workbook中添加一個(gè)sheet,對應(yīng)Excel文件中的sheetHSSFSheet sheet = wb.createSheet(sheetName);// 第三步,在sheet中添加表頭第0行,注意老版本poi對Excel的行數(shù)列數(shù)有限制HSSFRow row = sheet.createRow(0);// 第四步,創(chuàng)建單元格,并設(shè)置值表頭 設(shè)置表頭居中HSSFCellStyle style = wb.createCellStyle(); // style.setAlignment(HorizontalAlignment.CENTER); // 創(chuàng)建一個(gè)居中格式//聲明列對象HSSFCell cell = null;//創(chuàng)建標(biāo)題for(int i=0;i<title.length;i++){cell = row.createCell(i);cell.setCellValue(title[i]);cell.setCellStyle(style);}//創(chuàng)建內(nèi)容for(int i=0;i<values.length;i++){row = sheet.createRow(i + 1);for(int j=0;j<values[i].length;j++){//將內(nèi)容按順序賦給對應(yīng)的列對象row.createCell(j).setCellValue(values[i][j]);}}return wb;}//發(fā)送響應(yīng)流方法public static void setResponseHeader(HttpServletResponse response, String fileName) {try {try {fileName = new String(fileName.getBytes(),"ISO8859-1");} catch (UnsupportedEncodingException e) {// TODO Auto-generated catch blocke.printStackTrace();}response.setContentType("application/octet-stream;charset=ISO8859-1");response.setHeader("Content-Disposition", "attachment;filename="+ fileName);response.addHeader("Pargam", "no-cache");response.addHeader("Cache-Control", "no-cache");} catch (Exception ex) {ex.printStackTrace();}} }3.導(dǎo)出
@GetMapping("/export")@ApiOperation(value = "導(dǎo)出設(shè)備清單信息接口", notes = "導(dǎo)出")public void export(@RequestParam(value = "page", required = true, defaultValue = "0") @ApiParam(required = true, defaultValue = "0", value = "當(dāng)前頁數(shù),默認(rèn)從0開始") Integer page,@RequestParam(value = "limit", required = true, defaultValue = "10") @ApiParam(required = true, defaultValue = "10", value = "每一頁條數(shù),默認(rèn)10條") Integer limit,@RequestParam(value = "pkId", required = false) @ApiParam(required = false, value = "車場名稱") String pkId, HttpServletResponse response){try {log.info("++++++++++訪問/parkDevice/export接口:>>>>>>pkId:" + pkId );Page<ParkDeviceVo> requestPage = new Page<>(page, limit);Map<String, Object> requestParam = new HashMap<String, Object>();requestParam.put("pkId", pkId);Page<ParkDeviceVo> parkDeviceVoPage = parkDeviceService.getParkDevoceByPage(requestPage, requestParam);List<ParkDeviceVo> parkDeviceVoList = parkDeviceVoPage.getRecords();//excel標(biāo)題String[] title = {"設(shè)備類型","設(shè)備廠家","設(shè)備型號","設(shè)備數(shù)量","備注","添加時(shí)間"};//excel文件名String fileName = "設(shè)備清單信息"+System.currentTimeMillis()+".xls";//sheet名String sheetName = "設(shè)備清單信息表";String[][] content = new String[parkDeviceVoList.size()][title.length];for(int i = 0; i < parkDeviceVoList.size();i++){//設(shè)備類型if (parkDeviceVoList.get(i).getDeviceType()!=null){//設(shè)備類型(1.相機(jī) 2.道閘 3.顯示屏 4.其他)int type =parkDeviceVoList.get(i).getDeviceType();switch (type){case 1:content[i][0] = "相機(jī)";break;case 2:content[i][0] = "道閘";break;case 3:content[i][0] = "顯示屏";break;case 4:content[i][0] = "其他";break;}}else {content[i][0] = "";}//設(shè)備廠家content[i][1] = parkDeviceVoList.get(i).getDeviceVender() == null ? "" :parkDeviceVoList.get(i).getDeviceVender();//設(shè)備型號content[i][2] = parkDeviceVoList.get(i).getDeviceNo() == null ? "" :parkDeviceVoList.get(i).getDeviceNo();//設(shè)備數(shù)量content[i][3] =parkDeviceVoList.get(i).getDeviceNum() == null ? "" :parkDeviceVoList.get(i).getDeviceNum().toString();//設(shè)備型號content[i][4] = parkDeviceVoList.get(i).getRemark() == null ? "" :parkDeviceVoList.get(i).getRemark();//設(shè)備型號SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");content[i][4] = parkDeviceVoList.get(i).getCreateTime() == null ? "" :formatter.format(parkDeviceVoList.get(i).getCreateTime());}//創(chuàng)建HSSFWorkbookHSSFWorkbook wb = PoiUtils.getHSSFWorkbook(sheetName, title, content, null);//響應(yīng)到客戶端PoiUtils.setResponseHeader(response, fileName);OutputStream os = response.getOutputStream();wb.write(os);os.flush();os.close();log.info("++++++++++訪問/parkDevice/export接口調(diào)用成功>>>>>>");}catch (Exception e){log.error("++++++++++訪問/parkDevice/export接口系統(tǒng)異常原因 : +++++++++" + e.getMessage());}}?
總結(jié)
- 上一篇: MySql 创建存储过程
- 下一篇: php session超时设置,php如