微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

JavaWeb中导出excel文件的简单方法

在平时做系统项目时,经常会需要做导出功能,不论是导出excel,还是导出cvs文件。我下面的demo是在springmvc的框架下实现的。

1.JS中只需要用GET模式请求导出就可以了:

$('#word-export-btn').parent().on('click',function(){
		var promotionWord = JSON.stringify($('#mainForm').serializeObject());
		location.href="${ctx}/promotionWord/export?promotionWord="+promotionWord; 
});

2.在controller中要做的是将文件以数据流格式输出

  @RequestMapping("/export")
  public void export(HttpSession session,String promotionWord,HttpServletRequest request,HttpServletResponse response) throws IOException {
    User sessionUser = (User) session.getAttribute("user");
    JSONObject jsonObj = JSONObject.parSEObject(promotionWord);
    hssfWorkbook wb = promotionWordService.export(sessionUser.getId(),jsonObj);
    response.setContentType("application/vnd.ms-excel");
    Calendar cal = Calendar.getInstance();
    SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
    String fileName = "word-" + sdf.format(cal.getTime()) + ".xls";
    response.setHeader("Content-disposition","attachment;filename=" + fileName);
    OutputStream ouputStream = response.getoutputStream();
    wb.write(ouputStream);
    ouputStream.flush();
    ouputStream.close();
  }

3.在service中需要将数据写入到格式文件中:

public hssfWorkbook export(String userId,JSONObject jsonObj) {
hssfWorkbook wb = new hssfWorkbook(); 
hssfSheet sheet = wb.createSheet("word"); 
hssfRow row = sheet.createRow(0);
    hssfCellStyle style = wb.createCellStyle(); 
    style.setAlignment(hssfCellStyle.ALIGN_CENTER); 
List<PromotionWord> pWordList;
Map<String,Object> map = new HashMap<>();
map.put("userId",userId);
map.put("checkExistRule",jsonObj.getString("checkExistRule"));
map.put("status",jsonObj.getString("status"));
map.put("qsstar",jsonObj.getString("qsstar"));

map.put("impressionCount",jsonObj.getString("impressionCount"));

map.put("selectGroupId",jsonObj.getString("selectGroupId"));
map.put("isCheck",jsonObj.getString("isCheck"));
map.put("word",jsonObj.getString("word"));

Long impression = jsonObj.getLong("impressionCount");
Long click = jsonObj.getLong("clickCount");
if(impression != null){
PromotionWord word = new PromotionWord();
word.setCreatedBy(userId);
word.setImpressionCount7(impression);
pWordList = getTwentyPercentlists(word);
if(pWordList != null && pWordList.size() > 0){
map.put("impressionCount",pWordList.get(pWordList.size()-1).getImpressionCount());
}else{
map.put("impressionCount",1);
}
}else if(click != null){
PromotionWord word = new PromotionWord();
word.setCreatedBy(userId);
word.setClickCount7(click);
pWordList = getTwentyPercentlists(word);
if(pWordList != null && pWordList.size() > 0){
map.put("clickCount",pWordList.get(pWordList.size()-1).getClickCount());
}else{
map.put("clickCount",1);
}
}

List<PromotionWord> list = commonDao.queryList(PROMOTION_WORD_DAO + ".queryExportDataByUser",map);


String[] excelHeader = {"关键词","价格","搜索热度","推广评分","购买热度","曝光量","点击量","点击率","推广时长","花费","平均点击花费","匹配产品数","预估排名","状态"};
for (int i = 0; i < excelHeader.length; i++) { 
      hssfCell cell = row.createCell(i); 
      cell.setCellValue(excelHeader[i]); 
      cell.setCellStyle(style); 
      if(i == 0){
      sheet.setColumnWidth(0,30*256);
      }else{      
      sheet.setColumnWidth(i,10*256);
      }
    } 
if(list != null && list.size() > 0)
for (int i = 0; i < list.size(); i++) { 
      row = sheet.createRow(i + 1); 
      PromotionWord word = list.get(i); 
      row.createCell(0).setCellValue(word.getWord()); 
      row.createCell(1).setCellValue(word.getPrice()+""); 
      row.createCell(2).setCellValue(word.getSearchCount());
      row.createCell(3).setCellValue(word.getQsstar());
      row.createCell(4).setCellValue(word.getBuyCount());
      row.createCell(5).setCellValue(word.getImpressionCount7());
      row.createCell(6).setCellValue(word.getClickCount7());
      if(word.getClickCount7() == 0L){
      row.createCell(7).setCellValue("0.00%");
      }else{
      DecimalFormat df = new DecimalFormat("0.00%");
      row.createCell(7).setCellValue(df.format((Double.valueOf(word.getClickCount7())/Double.valueOf(word.getImpressionCount7()))));
      }
      row.createCell(8).setCellValue(word.getonlineTime7());
      row.createCell(9).setCellValue(word.getCost7()+"");
      row.createCell(10).setCellValue(word.getAvgCost7()+"");
      row.createCell(11).setCellValue(word.getMatchCount());
      String rank = "";
      if(word.getMatchCount() != null && word.getMatchCount() != 0){
      if(word.getProspectRank() == null || word.getProspectRank() == 0L){       
       rank = "其他位置";
       }else{
       rank = "第"+word.getProspectRank()+"位";
       }
      }else{
      rank = "---";
      }
      
      row.createCell(12).setCellValue(rank);
      row.createCell(13).setCellValue(word.getStatus() == 1 ?"暂停":"启动");
    } 

return wb;
}

这样之后就可以直接点击导出就有效果了。

以上就是小编为大家带来的JavaWeb中导出excel文件的简单方法全部内容了,希望大家多多支持编程小技巧~

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐