java – 从Spring返回Excel可下载文件
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了java – 从Spring返回Excel可下载文件,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1784字,纯文字阅读大概需要3分钟。
内容图文
![java – 从Spring返回Excel可下载文件](/upload/InfoBanner/zyjiaocheng/700/8fa924539ee3417082cc5697707ab406.jpg)
所以我有一个Spring控制器,我想创建一个Excel文件并将其返回,以便浏览器下载它.
我正在使用JEXcelApi.
这是我的控制器代码
@RequestMapping(value="/excel/cols/{colString}/rows/{rowString}/", method = RequestMethod.GET)
@ResponseBody
public ResponseEntity<String> exportExcel(HttpServletResponse response,
@PathVariable List<String> colString,
@PathVariable List<String> rowString) throws JSONException, IOException, WriteException {
WritableWorkbook workbook = Workbook.createWorkbook(new File("exported.xls"));
WritableSheet sheet = workbook.createSheet("Exported",0);
String[] cols = colString.get(0).split(",");
String[] rows = rowString.get(0).split(",");
for(int i = 0; i < cols.length;i++){
Label label = new Label(i,0, cols[i]);
sheet.addCell(label);
}
int excelCol = 0;
int excelRow = 1;
for(int i = 0; i < rows.length;i++){
Label label = new Label(excelCol,excelRow, rows[i]);
sheet.addCell(label);
excelCol++;
if((i+1) % cols.length == 0){
excelCol = 0;
excelRow++;
}
}
workbook.write();
workbook.close();
return null;
}
我怎么做?我怀疑我可以设置一些内容标题.我知道一种方法是使用Spring的Abstract Excel视图类,但是有一个更简单的方法吗?
解决方法:
您需要设置Content-Disposition标头.
response.setHeader("Content-disposition","attachment; filename=" + yourFileName);
并将您的字节直接写入响应OutputStream.
File xls = new File("exported.xls"); // or whatever your file is
FileInputStream in = new FileInputStream(xls);
OutputStream out = response.getOutputStream();
byte[] buffer= new byte[8192]; // use bigger if you want
int length = 0;
while ((length = in.read(buffer)) > 0){
out.write(buffer, 0, length);
}
in.close();
out.close();
以上是相对陈旧的.您现在可以使用FileSystemResource构建ResponseEntity.然后,ResourceHttpMessageConverter将为您复制字节,如上所述. Spring MVC使您更简单,而不是让您与Servlet规范中的接口进行交互.
内容总结
以上是互联网集市为您收集整理的java – 从Spring返回Excel可下载文件全部内容,希望文章能够帮你解决java – 从Spring返回Excel可下载文件所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。