使用REST服务下载excel文件

原创 2015年11月21日 15:08:23

使用REST服务下载excel文件。用HSSFWorkbook生成excel文件,用jax-rs、resteasy提供rest服务。

import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.IOException;

import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.Produces;
import javax.ws.rs.core.Response;
import javax.ws.rs.core.Response.ResponseBuilder;

import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.hssf.util.HSSFColor;
import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.CellStyle;
import org.apache.poi.ss.usermodel.Font;
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.ss.usermodel.Sheet;
import org.apache.poi.ss.usermodel.Workbook;

@Path("/download")
public class DownloadFileService {
    @GET
    @Path("/excel")
    @Produces("application/vnd.ms-excel; charset=UTF-8")
    public Response getExcelFile() {
 
    	Workbook workbook = new HSSFWorkbook();
		String title = "明细表";
		Sheet sheet = workbook.createSheet(title);
		Row headerRow = sheet.createRow(0);
		// TODO
		headerRow.createCell(0).setCellValue("开始时间");
		headerRow.createCell(1).setCellValue("结束时间");
		headerRow.createCell(2).setCellValue("持续时间");
		headerRow.createCell(3).setCellValue("描述");
		
		Row row = sheet.createRow(1);
		row.createCell(0).setCellValue("2015-11-11");
		row.createCell(1).setCellValue("2015-11-13");
		row.createCell(2).setCellValue("2");
		row.createCell(3).setCellValue("这里是描述");
		
		//================================
		Sheet sheett = workbook.getSheetAt(0);
		sheett.setDefaultColumnWidth(25);
		CellStyle style = workbook.createCellStyle();

		// 设置这些样式
		style.setFillForegroundColor(HSSFColor.WHITE.index);
		style.setFillPattern(CellStyle.SOLID_FOREGROUND);
		style.setBorderBottom(CellStyle.BORDER_THIN);
		style.setBorderLeft(CellStyle.BORDER_THIN);
		style.setBorderRight(CellStyle.BORDER_THIN);
		style.setBorderTop(CellStyle.BORDER_THIN);
		style.setAlignment(CellStyle.ALIGN_CENTER);

		// 生成一个字体
		Font font = workbook.createFont();
		font.setColor(HSSFColor.BLACK.index);
		font.setFontHeightInPoints((short) 12);

		// 把字体应用到当前的样式
		style.setFont(font);
		for (Row roww : sheet) {
			for (Cell cell : roww) {
				cell.setCellStyle(style);
			}
		}
		ByteArrayOutputStream baos = null;
		try {
			 baos = new ByteArrayOutputStream();
			workbook.write(baos);
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		
        ResponseBuilder response = Response.ok(baos.toByteArray());
        response.header("Content-Disposition","attachment; filename=\"test.xls\"");
        return response.build();
 
    }
}
浏览器输入http://127.0.0.1:8080/rest-project/rest/download/excel就能下载生成的excel文件

(直接下载url文件)使用Apache Httpclient访问Spring rest接口下载文件

参考http://blog.csdn.net/tangyajun_168/article/details/53647902 1.编写Spring rest接口,该接口将文件读入到流中并通过Respo...
  • u010466329
  • u010466329
  • 2018年01月16日 10:11
  • 93

RESTEasy文件下载例子

1、主要依赖
  • yangyangye
  • yangyangye
  • 2014年02月26日 10:30
  • 2255

通过Rest实现文件下载

Rest下载
  • gavinloo
  • gavinloo
  • 2017年05月16日 20:55
  • 1165

resttemplate下载文件

@Override public byte[] downloadImageByUrl(String imageUrl) { // TODO Auto-generated method stub ...
  • softwarehe
  • softwarehe
  • 2014年04月15日 10:16
  • 4284

RestTemplate下载文件

http使用的是二进制进行传输,也就意味着无论我们输入是什么类型,最终都会被转为二进制进行传输,那么接受方如何解析呢,这便是http头的意义,我们将解析格式放在http头中,接受方接受到数据后回去根据...
  • u013979547
  • u013979547
  • 2016年09月26日 00:22
  • 4554

jws 方式表格导出,excel文件导出,rest风格接口实现

一、思路:从数据库表中查出list ,封装到 HSSFWorkook 中,再由HSSFWorkook  写出到 File 中, 用 response 的 build 方法  实现下载、导出。 ...
  • u011314442
  • u011314442
  • 2018年01月17日 13:05
  • 34

【poi excel导出】不同浏览器的编码方式,解决下载文件名称乱码

//解决设置名称时的乱码 public static String processFileName(HttpServletRequest request, String fileNames) ...
  • lihuapiao
  • lihuapiao
  • 2016年03月08日 15:21
  • 2518

Spring Boot Rest Service 下载文件

download a file from Spring boot rest service
  • RickyIT
  • RickyIT
  • 2017年04月20日 12:03
  • 4017

使用Apache Httpclient访问Spring rest接口下载文件

使用Apache Httpclient访问Spring rest接口下载文件 1.编写Spring rest接口,该接口将文件读入到流中并通过ResponseEntity对象返回@RequestMa...
  • tangyajun_168
  • tangyajun_168
  • 2016年12月14日 21:51
  • 1735

jersey(restful)框架利用poi导出excel

jersey大家可能用的比较少,所以网上的资料没有ssh,ssm那么丰富,所以在此记下此笔记,以便自己以后忘了重新学习使用,也希望能帮到大家,本项目中我用到的是webservice+spring+hi...
  • m0_37679452
  • m0_37679452
  • 2018年01月09日 15:31
  • 109
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:使用REST服务下载excel文件
举报原因:
原因补充:

(最多只允许输入30个字)