1. 程式人生 > >Java使用POI匯出Excel工具類(反射)

Java使用POI匯出Excel工具類(反射)

pom.xml:

    <dependency>
      <groupId>org.apache.poi</groupId>
      <artifactId>poi</artifactId>
      <version>3.6</version>
    </dependency>

工具類:


import org.apache.poi.hssf.usermodel.*;

import java.lang.reflect.Field;
import java.util.HashMap;
import
java.util.List; import java.util.Map; /** * Excel匯出工具類 * @author 單繼重 * @since 2017/11/23 16:44 */ public class ExcelUtil { private static Map<String,String> exportFields = new HashMap<String, String>(); //初始化屬性Map static { exportFields.put("name","活動名稱"); exportFields.put("content"
,"活動內容"); exportFields.put("population","活動人數"); exportFields.put("provideMeal","提供餐飲"); exportFields.put("provideHotel","提供住宿"); exportFields.put("organization","主辦單位"); exportFields.put("tel","電話"); exportFields.put("qq","負責人qq"); exportFields.put("time"
,"活動時間"); exportFields.put("budget","活動經費"); exportFields.put("certificate","活動證書"); exportFields.put("status","活動狀態"); } /** * 獲取Excel實體 * @param sheetName sheet名字 * @param list 物件集合 * @return Excel實體 * @throws IllegalAccessException 安全許可權異常 */ public static HSSFWorkbook getHSSFWorkbook(String sheetName, List list) throws IllegalAccessException { //獲取物件所有屬性 Field[] fields = list.get(0).getClass().getDeclaredFields(); //表頭陣列 String[] title = new String[fields.length]; //設定表頭 for (int i = 0 ; i < fields.length ; i ++) { //獲取屬性 Field field = fields[i]; //設定該屬性可訪問 field.setAccessible(true); //在屬性Map中找到該屬性對應表頭 title[i] = exportFields.get(field.getName()); } // 第一步,建立一個workbook,對應一個Excel檔案 HSSFWorkbook workbook = new HSSFWorkbook(); // 第二步,在workbook中新增一個sheet,對應Excel檔案中的sheet HSSFSheet sheet = workbook.createSheet(sheetName); // 第三步,在sheet中新增表頭第0行,注意老版本poi對Excel的行數列數有限制short HSSFRow row = sheet.createRow(0); // 第四步,建立單元格,並設定值表頭 設定表頭居中 HSSFCellStyle style = workbook.createCellStyle(); style.setAlignment(HSSFCellStyle.ALIGN_CENTER); // 建立一個居中格式 HSSFCell cell = null; //建立標題 for(int i=0;i < title.length;i++){ cell = row.createCell(i); cell.setCellValue(title[i]); cell.setCellStyle(style); } //建立內容 for(int i = 0 ; i < list.size() ; i ++) { row = sheet.createRow(i + 1); for(int j = 0 ; j < fields.length ; j ++) { Field field = fields[j]; field.setAccessible(true); String value = String.valueOf(field.get(list.get(0))); row.createCell(j).setCellValue(value); } } return workbook; } }

測試類:


import com.taiji.jilin.common.entity.Activity;
import com.taiji.jilin.common.util.ExcelUtil;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.junit.Test;

import java.io.*;
import java.io.OutputStream;
import java.util.ArrayList;
import java.util.List;

/**
 * @author 單繼重
 * @since 2017/11/23 13:58
*/

public class ExcelTest {

    @Test
    public void test () throws Exception {
        String fileName = "test.xls";
        String sheetName = "sheet1";

        List<Activity> activities = new ArrayList<Activity>();
        for (int i = 0 ; i < 10 ; i ++ ) {
            Activity activity = new Activity();
            activity.setName("名稱");
            activity.setContent("內容");
            activity.setCertificate("證書");
            activity.setIsFinish(1);
            activity.setBudget("預算");
            activity.setId(123);
            activity.setOrganization("組織");
            activity.setPopulation(123456);
            activity.setProvideHotel("是");
            activity.setProvideMeal("餐飲");
            activity.setQq("QQ");
            activity.setTel("電話");
            activity.setTime("時間");
            activity.setStatus("啊啊啊");
            activities.add(activity);
        }
        HSSFWorkbook hssfWorkbook = ExcelUtil.getHSSFWorkbook(sheetName,activities);
        File file = new File("F:\\Shanjz" + fileName);
        OutputStream outputStream = null;
        try {
            outputStream = new FileOutputStream(file);
            hssfWorkbook.write(outputStream);
            outputStream.flush();
            outputStream.close();
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}