springboot 文件下载

Java导出Excel与PDF文件
本文介绍了一个使用Java实现的简单示例,该示例能够导出包含表头的Excel文件,并支持从本地下载指定的PDF文件。通过具体代码展示了如何创建Excel工作簿、设置样式、填充数据并进行响应式内容类型配置。
package com.example.file.controller;

import org.apache.poi.hssf.usermodel.*;
import org.apache.poi.ss.usermodel.HorizontalAlignment;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.*;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.*;


@RestController
public class ExportController {

    /**
     * 导出excel
     * @param response
     */
    @GetMapping("/exportExcel")
    public void fileDownLoad(HttpServletResponse response) {
        HSSFWorkbook hssfWorkbook = new HSSFWorkbook();
        HSSFSheet sheet = hssfWorkbook.createSheet("sheet");
        // 一个创建excel标题的的方法
        createTitle(hssfWorkbook, sheet);
        try {
            response.setContentType("application/vnd.ms-excel;charset=UTF-8");
            response.setCharacterEncoding("UTF-8");
            response.setHeader("Content-Disposition", "attachment;filename=" +
                    java.net.URLEncoder.encode("测试.xls", "UTF-8"));
            OutputStream outputStream = response.getOutputStream();
            hssfWorkbook.write(outputStream);
            outputStream.flush();
            outputStream.close();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    /**
     * 创建表头
     *
     * @param workbook
     * @param sheet
     */
    private void createTitle(HSSFWorkbook workbook, HSSFSheet sheet) {
        HSSFRow row = sheet.createRow(0);
        //设置为居中加粗
        HSSFCellStyle style = workbook.createCellStyle();
        style.setAlignment(HorizontalAlignment.CENTER);
        HSSFFont font = workbook.createFont();
        style.setFont(font);

        HSSFCell cell;
        cell = row.createCell(0);
        cell.setCellValue("测试1");
        cell.setCellStyle(style);


        cell = row.createCell(1);
        cell.setCellValue("测试2");
        cell.setCellStyle(style);

        cell = row.createCell(2);
        cell.setCellValue("测试3");
        cell.setCellStyle(style);

    }

    /**
     * 下载文件
     * @param response
     * @return
     */
    @GetMapping(value = "/exportFile")
    public void expertExcel(HttpServletResponse response) {
        File file = new File("/Volumes/Personal/remark.pdf");
        try {
            InputStream fis = new BufferedInputStream(new FileInputStream(file));
            byte[] buffer = new byte[fis.available()];
            fis.read(buffer);
            response.addHeader("Content-Length", "" + file.length());
            OutputStream toClient = new BufferedOutputStream(response.getOutputStream());
            response.setContentType("application/octet-stream;charset=utf-8");
            toClient.write(buffer);
            toClient.flush();
            fis.close();
            toClient.close();
        } catch (IOException ex) {
            ex.printStackTrace();
        }
    }
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值