实用的文件导出工具类

package com.ces.basefinance.core.utils;


import org.apache.poi.hssf.usermodel.*;
import org.apache.poi.ss.util.CellRangeAddress;
import org.springframework.http.HttpHeaders;
import org.springframework.http.HttpStatus;
import org.springframework.http.MediaType;
import org.springframework.http.ResponseEntity;


import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.nio.charset.Charset;
import java.util.ArrayList;
import java.util.List;


/**
 * @author Qin WeiLi on 2016/8/25 10:22.
 */
public class ExcelWriter {


    /**
     *
     * @param content
     * @param sheetName
     * @return
     * @throws IOException
     */
    public ResponseEntity write(List> content, String sheetName, String fileName) throws IOException {
        HSSFWorkbook workbook = new HSSFWorkbook();
        HSSFSheet sheet = workbook.createSheet(sheetName);
        HSSFCellStyle cellStyle = workbook.createCellStyle();
        cellStyle.setWrapText(true);
        cellStyle.setDataFormat(HSSFDataFormat.getBuiltinFormat("@"));
        HSSFRow row;
        HSSFCell cell;
        for (int i = 0, isize = content.size(); i < isize; i++) {
            List _row = content.get(i);
            row = sheet.createRow(i);
            int jsize = _row.size();
            for (int j = 0; j < jsize; j++) {
                cell = row.createCell(j);
                cell.setCellStyle(cellStyle);
                cell.setCellValue(_row.get(j));
            }
        }
        //将文件存到流中
        ByteArrayOutputStream os = null;
        try {
            os = new ByteArrayOutputStream();
            workbook.write(os);
            byte[] fileContent = os.toByteArray();
            HttpHeaders headers = new HttpHeaders();
            List charsets=new ArrayList<>();
            charsets.add(Charset.forName("UTF-8"));
            headers.setAcceptCharset(charsets);
            headers.setContentType(MediaType.APPLICATION_OCTET_STREAM);
            headers.setContentDispositionFormData("attachment", new String(fileName.getBytes("UTF-8"), "ISO8859-1"));
            return new ResponseEntity<>(fileContent, headers, HttpStatus.CREATED);
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            if(os != null) {
                os.close();
            }
        }


        return null;


    }


    /**
     *
     * @param content
     * @param sheetName
     * @param cellRangeAddresses
     * @return
     * @throws IOException
     */
    public ResponseEntity write(List> content, String sheetName, CellRangeAddress... cellRangeAddresses) throws IOException {
        HSSFWorkbook workbook = new HSSFWorkbook();
        HSSFSheet sheet = workbook.createSheet(sheetName);
        HSSFCellStyle cellStyle = workbook.createCellStyle();
        cellStyle.setWrapText(true);
        cellStyle.setDataFormat(HSSFDataFormat.getBuiltinFormat("@"));
        HSSFRow row;
        HSSFCell cell;
        for (int i = 0, isize = content.size(); i < isize; i++) {
            List _row = content.get(i);
            row = sheet.createRow(i);
            int jsize = _row.size();
            for (int j = 0; j < jsize; j++) {
                cell = row.createCell(j);
                cell.setCellStyle(cellStyle);
                cell.setCellValue(_row.get(j));
            }
        }
        for(CellRangeAddress cra : cellRangeAddresses) {
            sheet.addMergedRegion(cra);
        }
        //将文件存到流中
        ByteArrayOutputStream os = null;
        try {
            os = new ByteArrayOutputStream();
            workbook.write(os);
            byte[] fileContent = os.toByteArray();
            HttpHeaders headers = new HttpHeaders();
            headers.setContentType(MediaType.APPLICATION_OCTET_STREAM);
            headers.setContentDispositionFormData("attachment", "download.xls");
            return new ResponseEntity<>(fileContent, headers, HttpStatus.CREATED);
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            if(os != null) {
                os.close();
            }
        }
        return null;
    }
}

你可能感兴趣的:(实用的文件导出工具类)