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文件的简单方法全部内容了,希望大家多多支持我们~

(0)

相关推荐

  • java实现的导出Excel工具类实例

    本文实例讲述了java实现的导出Excel工具类.分享给大家供大家参考,具体如下: ExcelExportUtil: package com.excel; import java.io.FileOutputStream; import java.io.IOException; import java.io.OutputStream; import java.util.HashSet; import java.util.Map; import java.util.Set; import java.

  • Java根据模板导出Excel报表并复制模板生成多个Sheet页

    因为最近用报表导出比较多,所有就提成了一个工具类,本工具类使用的场景为  根据提供的模板来导出Excel报表 并且可根据提供的模板Sheet页进行复制 从而实现多个Sheet页的需求, 使用本工具类时,如果需求是每个Sheet页中的数据都不一致,但是表格样式和模板都一样 那么只需要在实际情况中根据 sql 来查询要添加的数据源 (只需更改数据源即可) 采用的技术为 POI 导出,因为类的缘故,目前只支持2003版本的Excel. 使用前请先下载相应jar包! 后期有时间的话会进行进一步完善,初次

  • java常用工具类之Excel操作类及依赖包下载

    依赖包下载:http://xiazai.jb51.net/201407/tools/java-excel-dependency(jb51.net).rar Excel工具类ExcelUtil.java源码: package com.itjh.javaUtil; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileOutputStr

  • JavaWeb动态导出Excel可弹出下载

    由于项目需求,需要将数据导出成Excel表格,并且可选择导出项,可下载.项目使用的Spring+Mybatis+SpringMVC框架,利用Apache POI导出Excel.POI具体使用请自行百度.话不多说,上代码. ExportExcelUtil代码 package com.rixin.common.util; import java.io.OutputStream; import java.lang.reflect.Method; import java.net.URLEncoder;

  • java导出数据库的全部表到excel

    本文实例为大家分享了java将某个数据库的表全部导出到excel中的方法,供大家参考,具体内容如下 第一步:如何用POI操作Excel @Test public void createXls() throws Exception{ //声明一个工作薄 HSSFWorkbook wb = new HSSFWorkbook(); //声明表 HSSFSheet sheet = wb.createSheet("第一个表"); //声明行 HSSFRow row = sheet.createR

  • java实现excel导入数据的工具类

    导入Excel数据的工具类,调用也就几行代码,很简单的. 复制代码 代码如下: import jxl.Cell;import jxl.Sheet;import jxl.Workbook;import jxl.read.biff.BiffException;import org.apache.commons.beanutils.BeanUtils;import org.slf4j.Logger;import org.slf4j.LoggerFactory; import java.io.IOExc

  • Java使用excel工具类导出对象功能示例

    本文实例讲述了Java使用excel工具类导出对象功能.分享给大家供大家参考,具体如下: package com.gcloud.common; import org.apache.poi.ss.usermodel.Cell; import org.apache.poi.ss.usermodel.Row; import org.apache.poi.ss.usermodel.Sheet; import org.apache.poi.xssf.streaming.SXSSFSheet; import

  • JavaWeb导出Excel文件并弹出下载框

    一.引言 在Java Web开发中经常涉及到报表,最近做的项目中需要实现将数据库中的数据显示为表格,并且实现导出为Excel文件的功能. 二.相关jar包 使用POI可以很好的解决Excel的导入和导出的问题,POI下载地址: poi-3.6-20091214.jar 三.关键代码 首先导入上述jar包. 在生成excel时一般数据源形式为一个List,下面把生成Excel格式的代码贴出来: /** * 以下为生成Excel操作 */ // 1.创建一个workbook,对应一个Excel文件

  • Java数据导出功能之导出Excel文件实例

    在编程中经常需要使用到表格(报表)的处理主要以Excel表格为主.下面给出用java写入数据到excel表格方法: 1.添加jar文件 java导入导出Excel文件要引入jxl.jar包,最关键的是这套API是纯Java的,并不依赖Windows系统,即使运行在Linux下,它同样能够正确的处理Excel文件.下载地址:http://www.andykhan.com/jexcelapi/ 2.jxl对Excel表格的认识 可以参见:http://www.jb51.net/article/686

  • 在java poi导入Excel通用工具类示例详解

    前言 本文主要给大家介绍了关于java poi导入Excel通用工具类的相关内容,分享出来供大家参考学习,下面话不多说了,来一起看看详细的介绍吧. 问题引入和分析 提示:如果不想看罗嗦的文章,可以直接到最后点击源码下载运行即可 最近在做一个导入Excel的功能,在做之前在百度上面查找"java通用导入Excel工具类",没有查到,大多数都是java通用导出Excel.后来仔细想想,导出可以利用java的反射,做成通用的,放进相应的实体成员变量中,导入为什么不可以呢?也是可以的,不过在做

随机推荐