通用Excel文件导出工具类
                                                            生活随笔
收集整理的這篇文章主要介紹了
                                通用Excel文件导出工具类
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.                        
                                1:Excel格式
2:ExcelUtil.java
import java.io.ByteArrayOutputStream; import java.io.IOException; import java.lang.reflect.Field; import java.util.List; import java.util.logging.Level; import java.util.logging.Logger; import org.apache.poi.hssf.usermodel.HSSFCell; import org.apache.poi.hssf.usermodel.HSSFCellStyle; import org.apache.poi.hssf.usermodel.HSSFFont; import org.apache.poi.hssf.usermodel.HSSFRow; import org.apache.poi.hssf.usermodel.HSSFSheet; import org.apache.poi.hssf.usermodel.HSSFWorkbook; import org.apache.poi.ss.usermodel.VerticalAlignment; import org.apache.poi.ss.util.CellRangeAddress;/*** @作者 yan* @創建日期* @版本 V1.0* @描述 Excel 導出通用工具類*/ public class ExcelUtil {public static byte[] export(String sheetTitle, String[] title, List<Object> list) {HSSFWorkbook wb = new HSSFWorkbook();//創建excel表HSSFSheet sheet = wb.createSheet(sheetTitle);sheet.setDefaultColumnWidth(20);//設置默認行寬//表頭樣式(加粗,水平居中,垂直居中)HSSFCellStyle cellStyle = wb.createCellStyle();cellStyle.setAlignment(HSSFCellStyle.ALIGN_CENTER);//水平居中cellStyle.setVerticalAlignment(VerticalAlignment.CENTER);//垂直居中//設置邊框樣式cellStyle.setBorderBottom(HSSFCellStyle.BORDER_THIN); //下邊框cellStyle.setBorderLeft(HSSFCellStyle.BORDER_THIN);//左邊框cellStyle.setBorderTop(HSSFCellStyle.BORDER_THIN);//上邊框cellStyle.setBorderRight(HSSFCellStyle.BORDER_THIN);//右邊框 HSSFFont fontStyle = wb.createFont();fontStyle.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD);cellStyle.setFont(fontStyle);//標題樣式(加粗,垂直居中)HSSFCellStyle cellStyle2 = wb.createCellStyle();cellStyle2.setVerticalAlignment(VerticalAlignment.CENTER);//垂直居中 cellStyle2.setFont(fontStyle);//設置邊框樣式cellStyle2.setBorderBottom(HSSFCellStyle.BORDER_THIN); //下邊框cellStyle2.setBorderLeft(HSSFCellStyle.BORDER_THIN);//左邊框cellStyle2.setBorderTop(HSSFCellStyle.BORDER_THIN);//上邊框cellStyle2.setBorderRight(HSSFCellStyle.BORDER_THIN);//右邊框//字段樣式(垂直居中)HSSFCellStyle cellStyle3 = wb.createCellStyle();cellStyle3.setVerticalAlignment(VerticalAlignment.CENTER);//垂直居中//設置邊框樣式cellStyle3.setBorderBottom(HSSFCellStyle.BORDER_THIN); //下邊框cellStyle3.setBorderLeft(HSSFCellStyle.BORDER_THIN);//左邊框cellStyle3.setBorderTop(HSSFCellStyle.BORDER_THIN);//上邊框cellStyle3.setBorderRight(HSSFCellStyle.BORDER_THIN);//右邊框//創建表頭HSSFRow row = sheet.createRow(0);row.setHeightInPoints(20);//行高 HSSFCell cell = row.createCell(0);cell.setCellValue(sheetTitle);cell.setCellStyle(cellStyle);sheet.addMergedRegion(new CellRangeAddress(0,0,0,(title.length-1)));//創建標題HSSFRow rowTitle = sheet.createRow(1);rowTitle.setHeightInPoints(20);HSSFCell hc;for (int i = 0; i < title.length; i++) {hc = rowTitle.createCell(i);hc.setCellValue(title[i]);hc.setCellStyle(cellStyle2);}byte result[] = null;ByteArrayOutputStream out = null;try {//創建表格數據 Field[] fields;int i = 2;for (Object obj : list) {fields = obj.getClass().getDeclaredFields();HSSFRow rowBody = sheet.createRow(i);rowBody.setHeightInPoints(20);int j = 0;for (Field f : fields) {f.setAccessible(true);Object va = f.get(obj);if (null == va) {va = "";}hc = rowBody.createCell(j);hc.setCellValue(va.toString());hc.setCellStyle(cellStyle3);j++;}i++;}out = new ByteArrayOutputStream();wb.write(out);result = out.toByteArray();} catch (Exception ex) {Logger.getLogger(ExcelUtil.class.getName()).log(Level.SEVERE, null, ex);} finally{try {if(null != out){out.close();}} catch (IOException ex) {Logger.getLogger(ExcelUtil.class.getName()).log(Level.SEVERE, null, ex);} finally{try {wb.close();} catch (IOException ex) {Logger.getLogger(ExcelUtil.class.getName()).log(Level.SEVERE, null, ex);}}}return result;} }?
3:測試
public static void main(String[] args) {String sheetTitle = "用戶信息";String[] title = {"姓名", "年齡"};List<Object> list = new ArrayList<Object>();for(int i=0;i<10;i++){User u = new User();u.setUname("張三"+i);u.setAge(10+i);list.add(u);}byte b[] = ExcelUtil.export(sheetTitle, title, list);File f = new File("G:\\tmp\\"+sheetTitle+".xls");try {FileUtils.writeByteArrayToFile(f, b, true);} catch (IOException ex) {Logger.getLogger(Test.class.getName()).log(Level.SEVERE, null, ex);}}?
4:依賴包
commons-io-2.4.jar
poi-3.15.jar
?
總結
以上是生活随笔為你收集整理的通用Excel文件导出工具类的全部內容,希望文章能夠幫你解決所遇到的問題。
                            
                        - 上一篇: 曝小米 Civi 3 自拍手机搭载天玑
 - 下一篇: 通过 pxe(网络安装)完成centos