使用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文件

相关文章推荐

REST API

什么是REST? REST (REpresentation State Transfer) 描述了一个架构样式的网络系统,比如 web 应用程序。它首次出现在 2000 年 Roy Fieldi...

Spring Boot Rest Service 下载文件

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

rest服务上传下载

仅供参考 package rest; import java.io.BufferedInputStream; import java.io.BufferedOutputS...

REST中远程文件下载笔记

大致结构如下//@Context HttpServletResponse respons; ...

Jersey 文件下载

Jersey 文件下载Jersey实现文件下载有两种方式,一种是直接将文件作为响应体,一种是使用StreamingOutput对象作为响应体。一、使用文件对象作为响应体Jersey支持直接使用文件对象...

Spring Boot实战之导出excel,并上传存入Azure Storage

Spring Boot实战之导出excel 本文使用Apache POI实现excel文档的导出。 实现从数据库读取数据——生成excel——上传到AzureStorage的流程 数据库操作,及文...
  • sun_t89
  • sun_t89
  • 2016年08月02日 09:18
  • 11379

@Controller和@RestController的区别?

@Controller和@RestController的区别? 官方文档: @RestController is a stereotype annotation that combines @...

通过Rest实现文件下载

Rest下载

利用resteasy框架构建rest webservice----第六波:实现文件下载

客户端代码: package resteasy.server; import java.io.DataOutputStream; import java.io.File; import...

jsp导出Excel的简单方式 ContentType为Excel格式

-----------摘自百度文库---------------- 2009-08-07 JSP应用导出Excel报表的简单实现以及中文乱码彻底解决(HTML)  Web应用导出...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:使用REST服务下载excel文件
举报原因:
原因补充:

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