国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

java導(dǎo)出excel工具類

Donald / 2404人閱讀

摘要:第一步創(chuàng)建需要導(dǎo)出的實體類導(dǎo)出學(xué)生基本信息的實體類姓名學(xué)號學(xué)院專業(yè)年級宿舍性別民族出生日期說明這個為自定義注解,如果有字段在中不需要導(dǎo)出,則不加自定義注解即可。

第一步:創(chuàng)建需要導(dǎo)出的excel實體類

/**
 * 導(dǎo)出學(xué)生基本信息的實體類
 * Created by staunch on 2016/11/22.
 */
@Data
public class ExcelBaseInfo {
    @ExcelAnno(head = "姓名")
    private String name;
    @ExcelAnno(head = "學(xué)號")
    private String studentId;
    @ExcelAnno(head = "學(xué)院")
    private String CollegeName;
    @ExcelAnno(head = "專業(yè)")
    private String majorName;
    @ExcelAnno(head = "年級")
    private String gradeName;
    @ExcelAnno(head = "宿舍")
    private String dorm;
    @ExcelAnno(head = "性別")
    private String sex;
    @ExcelAnno(head = "民族")
    private String nation;
    @ExcelAnno(head = "出生日期")
    private Date birthday;

}

說明:@ExcelAnno這個為自定義注解,如果有字段在excel中不需要導(dǎo)出,則不加自定義注解即可。

第二步:自定義注解如下:

/**
 * Created by staunch on 2016/11/25.
 */
@Documented
@Target({ElementType.METHOD, ElementType.FIELD,ElementType.PARAMETER,ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
public @interface ExcelAnno {
    String head() default "";
}

第三步:工具類源碼

/**
 * Created by staunch on 2016/11/22.
 */
@Log4j
public class ExportExcelUtil {

    /**
     * 這是一個通用的方法,利用了JAVA的反射機制,可以將放置在JAVA集合中并且符號一定條件的數(shù)據(jù)以EXCEL
     * 的形式輸出到指定IO設(shè)備上
     * @param title   表格標(biāo)題名
     * @param dataset 需要顯示的數(shù)據(jù)集合,集合中一定要放置符合javabean風(fēng)格的類的對象。
     * @param out     與輸出設(shè)備關(guān)聯(lián)的流對象,可以將EXCEL文檔導(dǎo)出到本地文件或者網(wǎng)絡(luò)中
     * @param pattern 如果有時間數(shù)據(jù),設(shè)定輸出格式。默認為"yyy-MM-dd"
     */
    @SuppressWarnings("deprecation")
    public void exportExcel(String title, List dataset, OutputStream out,
                            String pattern) throws Exception {
        // 聲明一個工作薄
        HSSFWorkbook workbook = new HSSFWorkbook();
        // 生成一個表格
        HSSFSheet sheet = workbook.createSheet(title);
        // 設(shè)置表格默認列寬度為20個字節(jié)
        sheet.setDefaultColumnWidth((short) 20);
        // 生成一個樣式
        HSSFCellStyle style = workbook.createCellStyle();
        // 設(shè)置這些樣式
        style.setFillForegroundColor(HSSFColor.SKY_BLUE.index);
        style.setFillPattern(HSSFCellStyle.SOLID_FOREGROUND);
        style.setBorderBottom(HSSFCellStyle.BORDER_THIN);
        style.setBorderLeft(HSSFCellStyle.BORDER_THIN);
        style.setBorderRight(HSSFCellStyle.BORDER_THIN);
        style.setBorderTop(HSSFCellStyle.BORDER_THIN);
        style.setAlignment(HSSFCellStyle.ALIGN_CENTER);
        // 生成一個字體
        HSSFFont font = workbook.createFont();
        font.setColor(HSSFColor.VIOLET.index);
        font.setFontHeightInPoints((short) 12);
        font.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD);
        // 把字體應(yīng)用到當(dāng)前的樣式
        style.setFont(font);

        // 生成并設(shè)置另一個樣式
        HSSFCellStyle style2 = workbook.createCellStyle();
        style2.setFillForegroundColor(HSSFColor.LIGHT_YELLOW.index);
        style2.setFillPattern(HSSFCellStyle.SOLID_FOREGROUND);
        style2.setBorderBottom(HSSFCellStyle.BORDER_THIN);
        style2.setBorderLeft(HSSFCellStyle.BORDER_THIN);
        style2.setBorderRight(HSSFCellStyle.BORDER_THIN);
        style2.setBorderTop(HSSFCellStyle.BORDER_THIN);
        style2.setAlignment(HSSFCellStyle.ALIGN_CENTER);
        style2.setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER);
        // 生成另一個字體
        HSSFFont font2 = workbook.createFont();
        font2.setBoldweight(HSSFFont.BOLDWEIGHT_NORMAL);
        // 把字體應(yīng)用到當(dāng)前的樣式
        style2.setFont(font2);

        if (dataset == null || dataset.size() == 0) return;
        T tempT = dataset.get(0);
        Field[] heads = tempT.getClass().getDeclaredFields();
        List headList = new ArrayList<>();
        //獲取字段注解的表頭
        for(int i=0;i it = dataset.iterator();
        int index = 0;
        while (it.hasNext()) {
            index++;
            row = sheet.createRow(index);
            T t = (T) it.next();
            Field[] fields = t.getClass().getDeclaredFields();
            List fieldsList = new ArrayList<>();
            for (Field field : fields) {
                if(field.getAnnotations().length != 0)
                    fieldsList.add(field);
            }
            for (Field field:fieldsList) {
                HSSFCell cell = row.createCell(fieldsList.indexOf(field));
                cell.setCellStyle(style2);
                String fieldName = field.getName();
                String getMethodName = "get"
                        + fieldName.substring(0, 1).toUpperCase()
                        + fieldName.substring(1);
                Class tCls = t.getClass();
                Method getMethod = tCls.getMethod(getMethodName,
                        new Class[]
                                {});
                Object value = getMethod.invoke(t, new Object[]
                        {});
                // 判斷值的類型后進行強制類型轉(zhuǎn)換
                String textValue = null;
                if (value == null) {
                    cell.setCellValue("");
                }
                if (value instanceof Integer) {
                    int intValue = (Integer) value;
                    cell.setCellValue(intValue);
                } else if (value instanceof Float) {
                    float fValue = (Float) value;
                    cell.setCellValue(fValue);
                } else if (value instanceof Double) {
                    double dValue = (Double) value;
                    cell.setCellValue(dValue);
                } else if (value instanceof Long) {
                    long longValue = (Long) value;
                    cell.setCellValue(longValue);
                } else if (value instanceof Date) {
                    Date date = (Date) value;
                    SimpleDateFormat sdf = new SimpleDateFormat(pattern);
                    textValue = sdf.format(date);
                    cell.setCellValue(textValue);
                } else {
                    // 其它數(shù)據(jù)類型都當(dāng)作字符串簡單處理
                    textValue = value==null? "":value.toString();
                    cell.setCellValue(textValue);
                }
            }
        }
        workbook.write(out);
    }

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/66279.html

相關(guān)文章

  • Java對象和Excel轉(zhuǎn)換工具XXL-EXCEL

    摘要:一行代碼完成對象和之間的轉(zhuǎn)換。說明屬性列名稱四版本更新日志版本,新特性導(dǎo)出支持對象裝換為,并且支持字節(jié)數(shù)組等多種導(dǎo)出方式導(dǎo)入支持轉(zhuǎn)換為對象,并且支持文件路徑等多種導(dǎo)入方式版本,新特性字段支持類型。 《Java對象和Excel轉(zhuǎn)換工具XXL-EXCEL》 showImg(https://segmentfault.com/img/remote/1460000012470335);showI...

    mj 評論0 收藏0
  • 自己寫的簡單java excel導(dǎo)入導(dǎo)出工具(封裝POI)

    Octopus 如何導(dǎo)入excel 如何導(dǎo)出excel Octopus Octopus 是一個簡單的java excel導(dǎo)入導(dǎo)出工具. 如何導(dǎo)入excel 下面是一個excel文件中sheet的數(shù)據(jù),有四個學(xué)生信息. studentId name sex inTime score 20134123 John M 2013-9-1 89 20124524 Joyce F 2012...

    xiangchaobin 評論0 收藏0
  • java 導(dǎo)出 excel 最佳實踐,java 大文件 excel 避免OOM(內(nèi)存溢出) exce

    摘要:消費之后,多線程處理文件導(dǎo)出,生成文件后上傳到等文件服務(wù)器。前端直接查詢并且展現(xiàn)對應(yīng)的任務(wù)執(zhí)行列表,去等文件服務(wù)器下載文件即可。這客戶體驗不友好,而且網(wǎng)絡(luò)傳輸,系統(tǒng)占用多種問題。拓展閱讀導(dǎo)出最佳實踐框架 產(chǎn)品需求 產(chǎn)品經(jīng)理需要導(dǎo)出一個頁面的所有的信息到 EXCEL 文件。 需求分析 對于 excel 導(dǎo)出,是一個很常見的需求。 最常見的解決方案就是使用 poi 直接同步導(dǎo)出一個 exc...

    K_B_Z 評論0 收藏0

發(fā)表評論

0條評論

Donald

|高級講師

TA的文章

閱讀更多
最新活動
閱讀需要支付1元查看
<