动力节点旗下在线教育品牌  |  咨询热线:400-8080-105 学Java全栈,上蛙课网
首页 > 文章

javaweb导出excel文件的简单步骤

06-11 16:20 258浏览
举报 T字号
  • 大字
  • 中字
  • 小字

Javaweb导出Excel文件在一些系统上是比较常见的功能,也是重要的一个功能,比如,医院的医生站、护士站、门急诊电子病历的绩效考评等系统上就会有导出Excel表的功能,这样就方便了客户和医生的阅览。那么javaweb怎么导出Excel文件呢,我们一起来看一下大致步骤。

首先我们来看一下jsp页面中js部分关于导出Excel表的主要功能:

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

Jsp页面使用get()方法进行导出就可以了。

然后看一下控制层Controller类中关于导出Excel表的主要功能:

@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();
}

Controller类中需要做的功能是将文件以数据流格式输出。

最后就是逻辑层service类中关于导出Excel表的主要功能:

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 pWordList;
Map 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 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;
}

Service类的主要功能是将数据写入到格式文件中。

以上就是javaweb导出Excel文件的简单步骤,也是Excel表导出的核心功能,大家赶紧动手试一下吧。

0人推荐
共同学习,写下你的评论
0条评论
敲代码的小码农
程序员敲代码的小码农

6篇文章贡献31491字

作者相关文章更多>

推荐相关文章更多>

Java数据结构

HelloWorld10-31 08:24

浅谈MySQL中SQL优化的常用方法

军哥08-12 23:29

五分钟读懂UML类图

江湖人称小李白12-10 10:41

MyBatis开发框架的四大核心

IT逐梦者08-17 21:43

一次搞定continue,break和return

HelloWorld11-06 11:19

发评论

举报

0/150

取消