springmvc生成Excel并且返回给客户端

来源:互联网 发布:可可粉推荐知乎 编辑:程序博客网 时间:2024/05/29 13:25

springmvc生成Excel并且返回给客户端

1、首先是springmvc生成文件。

2、生成excel。==》这个可以参考我的apache POI EXCEL生成专题。点击打开链接

好了,下面是代码:
package enht.soft.newhotelstn.controller;import org.apache.poi.hssf.usermodel.HSSFWorkbook;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.ss.usermodel.Workbook;import org.apache.poi.ss.util.CellReference;import org.springframework.http.HttpHeaders;import org.springframework.http.HttpStatus;import org.springframework.http.MediaType;import org.springframework.http.ResponseEntity;import org.springframework.stereotype.Controller;import org.springframework.web.bind.annotation.RequestMapping;import org.springframework.web.bind.annotation.RequestMethod;import java.io.*;/** * Created by Administrator on 2016-09-02. */@Controller@RequestMapping(value = "/downloadFile", method = {RequestMethod.GET, RequestMethod.POST})public class FileDownLoad {    @RequestMapping("download")    public ResponseEntity<byte[]> download() throws IOException {        Workbook wb = new HSSFWorkbook();        Sheet sh = wb.createSheet();        for (int rownum = 0; rownum < 50; rownum++) {            Row row = sh.createRow(rownum);            for (int cellnum = 0; cellnum < 30; cellnum++) {                Cell cell = row.createCell(cellnum);                CellReference cr = new CellReference(cell);                String address = cr.formatAsString();                cell.setCellValue(address + "row:" + cr.getRow() +" col:" +cr.getRow());            }        }        ByteArrayOutputStream out = new ByteArrayOutputStream();        try {            wb.write(out);        } catch (IOException e) {            // TODO Auto-generated catch block            e.printStackTrace();        }        HttpHeaders headers = new HttpHeaders();        String fileName = new String("测试.xls".getBytes("UTF-8"), "iso-8859-1");//为了解决中文名称乱码问题        headers.setContentDispositionFormData("attachment", fileName);        headers.setContentType(MediaType.APPLICATION_OCTET_STREAM);        ResponseEntity<byte[]> filebyte = new ResponseEntity<byte[]>(out.toByteArray(),headers, HttpStatus.CREATED);        try {            out.close();        } catch (IOException e) {            // TODO Auto-generated catch block            e.printStackTrace();        }        return filebyte;    }}

3、需要的jar包

4、运行后的结果:

5、如果运行的时候发现比较慢的话,可以把数据弄的少一些。
0 0
原创粉丝点击