java 프론트 데스크 톱 백 엔 드 조건 내 보 내기 excel 및 내 보 내기 excel 유 니 버 설 도구 클래스

9678 단어 자바전단
필요:
프론트 데스크 톱 에서 엑셀 표를 내 보 내 려 면 boottstrap table 의 tableExport. js 플러그 인 으로 내 보 내 려 고 하지만 현재 페이지 의 데이터 만 내 보 낼 수 있 습 니 다. so 는 배경 으로 내 보 내기 (슬 픈 재촉) 로 바 뀌 었 습 니 다.
 
내 보 내기 단추:

JavaScript 코드:
function supplierOutIncheckExport(){
    var url =inventoryObj.initStoreInventorycheckExportUrl;//          
	//       form        ID        
    exportForm = document.createElement("form");
    exportForm.setAttribute('id','StorageInventoryVo')
    exportForm.setAttribute('name','StorageInventoryVo');
    exportForm.setAttribute("action", url);
    exportForm.setAttribute("contentType", 'application/x-xls');
    exportForm.setAttribute("hidden", true);
    exportForm.setAttribute("method", "post");
	//       input          ,   form   
    var userId = document.createElement("input");
    userId.type = "text";
    userId.name = "staffId";
    userId.value = currentUser.userId;
    exportForm.appendChild(userId);
    //       input          ,   form   
	var fileName = document.createElement("input");
    fileName.type = "text";
    fileName.name = "fileName";
    fileName.value = "   (  )  .xls";
    exportForm.appendChild(fileName);
	//    
    document.body.appendChild(exportForm);
    exportForm.submit();
}

자바 배경 코드:
/**
	*
	* @Author: ruanyanghui
	* @Company: xxxx
	* @Description:       
	* @date 2018/12/6 14:35
	*/
	@PostMapping("/storageexport")
	public void getstorageexport(StorageInventoryVo vo, HttpServletResponse response) {
		vo = vo.getParams();
		String[] headArray = {"    ", "    ", "    ","    ", "  ", "     ", "    ",
				"     (¥)", "    ", "    ", "    ", "  (¥)"};
		List list = inventoryService.findStorageInventoryExport(vo.getStaffId(), vo.getGoodsName(), vo.getGoodsNo(), vo.isLowerThan(), vo.getSupplierName());
		List contentList = new ArrayList<>();
		if (list.size() > 0) {
			list.stream().forEach(entity -> {
				Object[] o = {
						entity.getGoodsNo(),//    
						entity.getGoodsName(),
						entity.getGoodsTypeName(),
						entity.getSupplierName(),
						entity.getUnit(),
						entity.getSupplier(),
						entity.getIsBook(),
						entity.getStorePrice(),
						entity.getMinInventory(),
						entity.getActualInventory(),
						entity.getFreeze(),
						entity.getStorePrice().multiply(new BigDecimal(entity.getActualInventory()))
				};
				contentList.add(o);
			});
		} else {
			return;
		}
			ExeclUtil.ExportExcel(response, headArray, contentList, vo.getFileName());
	}

maven 의존 도입:
        
            org.apache.poi
            poi
            3.9
        
        
            org.apache.poi
            poi-ooxml
            3.9
        

 
Excel 도구 클래스 내 보 내기:
 이 도구 종류 도 제 가 인터넷 에서 찾 은 것 입 니 다. 그러나 그 안의 방법 이 시대 에 뒤떨어 진 문제, 그리고 파일 이름 의 난 코드 를 내 보 내 는 문제 도 최적화 되 었 습 니 다. HXSSFWorkbook 은 여러 데이터 와 의 SXSSFWorkbook 을 처리 할 수 있 도록 교체 되 었 습 니 다. 안심 하고 사용 할 수 있 습 니 다.
package com.xxx.utils;

import org.apache.poi.ss.usermodel.*;
import org.apache.poi.xssf.streaming.SXSSFWorkbook;
import org.apache.poi.xssf.usermodel.*;

import java.io.*;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.List;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

import javax.servlet.http.HttpServletResponse;


/**
 * @Author: ruanyanghui
 * @Company: xxx
 * @Description: Excel     
 * @date 2018/12/7 17:49
 */
public class ExeclUtil {

    /**
     * @param title
     * @param headers
     * @param dataset
     */
    public static InputStream exportExcel(String title, String[] headers, List dataset) {
        InputStream is;
        ByteArrayOutputStream os = new ByteArrayOutputStream();
        //        
        SXSSFWorkbook workbook = new SXSSFWorkbook();
        //       
        Sheet sheet = workbook.createSheet(title);
        //           15   
        sheet.setDefaultColumnWidth(15);
        //       
        CellStyle style = workbook.createCellStyle();
        Font font = workbook.createFont();
        font.setFontHeightInPoints((short) 12);
        font.setBoldweight(XSSFFont.BOLDWEIGHT_BOLD);
        style.setFillForegroundColor((short) 1);
        //            
        style.setFont(font);
        //           
        CellStyle style2 = workbook.createCellStyle();

        //        
        Font font2 = workbook.createFont();
        font2.setBoldweight(XSSFFont.BOLDWEIGHT_NORMAL);
        //            
        style2.setFont(font2);
        //             
        Drawing patriarch = sheet.createDrawingPatriarch();
        //           ,    
        Row row = sheet.createRow(0);
        for (int i = 0; i < headers.length; i++) {
            Cell cell = row.createCell(i);
            cell.setCellStyle(style);
            XSSFRichTextString text = new XSSFRichTextString(headers[i]);
            cell.setCellValue(text);
        }
        //       ,     
        int index = 0;
        for (Object[] o : dataset) {
            index++;
            row = sheet.createRow(index);
            for (int i = 0; i < o.length; i++) {
                Cell cell = row.createCell(i);
                cell.setCellStyle(style2);
                try {
                    Object value = o[i];
                    if (value == null) {
                        value = "";
                    }
                    //                
                    String textValue = null;
                    if (value instanceof Boolean) {
                        boolean bValue = (Boolean) value;
                        textValue = " ";
                        if (!bValue) {
                            textValue = " ";
                        }
                    } else if (value instanceof Date) {
                        Date date = (Date) value;
                        SimpleDateFormat sdf = new SimpleDateFormat(
                                "yyyy-MM-dd HH:mm:ss");
                        textValue = sdf.format(date);
                    } else if (value instanceof byte[]) {
                        //     ,     60px;
                        row.setHeightInPoints(60);
                        //           80px,           
                        sheet.setColumnWidth(i, (short) (35.7 * 80));
                        // sheet.autoSizeColumn(i);
                        byte[] bsValue = (byte[]) value;
                        XSSFClientAnchor anchor = new XSSFClientAnchor(0, 0,
                                1023, 255, (short) 7, index, (short) 7, index);
                        anchor.setAnchorType(2);
                        patriarch.createPicture(anchor, workbook.addPicture(
                                bsValue, XSSFWorkbook.PICTURE_TYPE_JPEG));
                    } else {
                        //                 
                        textValue = value.toString();
                    }
                    //         ,          textValue         
                    if (textValue != null) {
                        Pattern p = Pattern.compile("([0-9]\\d*\\.?\\d*)|(0\\.\\d*[0-9])");
                        Matcher matcher = p.matcher(textValue);
                        if (matcher.matches()) {
                            //      double  
                            cell.setCellValue(Double.parseDouble(textValue));
                        } else {
                            XSSFRichTextString richString = new XSSFRichTextString(
                                    textValue);
                             Font font3 = workbook.createFont();
                            richString.applyFont(font3);
                            cell.setCellValue(richString);
                        }
                    }
                } catch (Exception e) {
                    e.printStackTrace();
                } finally {
                    //     
                }
            }
        }
        try {
            workbook.write(os);
        } catch (IOException e) {
            e.printStackTrace();
        }
        is = new ByteArrayInputStream(os.toByteArray());
        return is;
    }

    public static void ExportExcel(HttpServletResponse response, String[] headArray,
                                   List contentList, String fileName) {
        //     
        InputStream inStream = exportExcel(fileName, headArray, contentList);
        //        
        response.reset();
        response.setContentType("bin");
        try {
            response.addHeader("Content-Disposition", "attachment; filename=" + new String(fileName.getBytes("gbk"), "iso8859-1"));
        } catch (UnsupportedEncodingException e) {
            e.printStackTrace();
        }
        //          
        byte[] b = new byte[1000];
        int len;
        try {
            while ((len = inStream.read(b)) > 0)
                response.getOutputStream().write(b, 0, len);
            inStream.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }


}

좋은 웹페이지 즐겨찾기