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、如果运行的时候发现比较慢的话,可以把数据弄的少一些。