Java 实现获取Excel模板并写入数据,再实现下载

直接上代码

/**
* 下载
*
* @return
*/
@ApiOperation(value = “下载”, response = Result.class)
@RequestMapping(value = “/exoprtAllList.do”, method = RequestMethod.GET)
public Result exoprtAllAdjustList(HttpServletResponse response) throws IOException {
try {
service.exoprtAllList( response);
} catch (Exception e) {
// TODO Auto-generated catch block
log.error(“下载出差啦。。” + e.getMessage(), e);
}
return ResultUtil.success();

}

@Override
public void exoprtAllList(HttpServletResponse response) {

	List<AssetConversionDownloadExcel> list = baseMapper.queryDownloadExcelsList();
	
	writeExcel(response, list);
	
}

private void writeExcel(HttpServletResponse response, List list) {
//File newFile = new File(GlobalConstant.ZGSQ_FILE_PATH);
File newFile = new File(“D:\工作笔记\2003\资产转固\固定资产增置单5.xlsx”);

    //新文件写入数据,并下载*****************************************************
    InputStream is = null;
    XSSFWorkbook xSSFWorkbook=null;
    XSSFSheet xSSFSheet=null;
    try {
        is = new FileInputStream(newFile);
        xSSFWorkbook = new XSSFWorkbook(is);
        //获取第一个sheet
        xSSFSheet = xSSFWorkbook.getSheetAt(0);
    } catch (Exception e1) {
        e1.printStackTrace();
    }
    
    if(xSSFSheet != null){
        try {
            //写数据
            FileOutputStream fos = new FileOutputStream(newFile);
            //构建每行的数据内容
            int rowNum = 1;
            for (AssetConversionDownloadExcel data : list) {
            	if (data == null) {
                    continue;
                }
                //输出行数据
                Row row = xSSFSheet.createRow(rowNum++);
                int cellNum = 0;
                Cell cell;
                // 序号
                cell = row.createCell(cellNum++);
                cell.setCellValue(cellNum);
                // 项目编号
                cell = row.createCell(cellNum++);
                cell.setCellValue(null == data.getProjectNo() ? "" : data.getProjectNo());
                // 项目名称
                cell = row.createCell(cellNum++);
                cell.setCellValue(null == data.getProjectNm() ? "" : data.getProjectNm());
                // 所在金额
                cell = row.createCell(cellNum++);
                cell.setCellValue(null == data.getProjectAmount() ? null : data.getProjectAmount());
              
			}
            xSSFWorkbook.write(fos);
            fos.flush();
            fos.close();
            
            //下载
           InputStream fis = new BufferedInputStream(new FileInputStream(newFile));
           
           byte[] buffer = new byte[fis.available()];
           fis.read(buffer);
           fis.close();
           response.reset();
           response.setContentType("text/html;charset=UTF-8");
           OutputStream toClient = new BufferedOutputStream(response.getOutputStream());
              response.setContentType("application/x-msdownload");
              String newName = URLEncoder.encode("固定资产增置单"+System.currentTimeMillis()+".xlsx", "UTF-8");
              response.addHeader("Content-Disposition", "attachment;filename=\""+ newName + "\"");
              response.addHeader("Content-Length", "" + newFile.length());
           toClient.write(buffer);
           toClient.flush();
        }
        catch(Exception e) {
            e.printStackTrace();
        }finally {
            try {
                if (null != is) {
                    is.close();
                }
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    }
}
  • 2
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值