萬能Excel導入導出工具:J-Excel

jopen 10年前發布 | 31K 次閱讀 J-Excel Office文檔處理

J-Excel 是萬能的 Excel 導入導出工具:

  • 支持從List<Map>中導出

  • 支持從List<POJO>中導入導出

  • 支持從List<POJO里面還有List<POJO>>中導入導出

  • 支持導出類似課程表結構類型縱表

  • 支持國際化

  • 不寫一個配置文件!


    示例請參照:

    ublic class TestExcel {
    static {
        SimpleConfigurator.addConfigurator(new DbConfig("jdbc:mysql://localhost/digitalcampus?createDatabaseIfNotExist=true&useUnicode=true&characterEncoding=utf-8&autoReconnect=true", DbConfig.DEFAULT_CONFIG_NAME));
    }
    /**
     * 從List<Map>中導出
     * @param workbook
     * @throws Exception
     */
    public static void testSimpleMapExport(Workbook workbook) throws Exception {
        Hyberbin hyberbin = new Hyberbin();
        List<Map> list = hyberbin.getMapList("select * from dc_xxkc");
        Sheet sheet = workbook.createSheet("testSimpleMapExport");
        List<String> cols = new ArrayList<String>();
        List<FieldColumn> fieldColumns = hyberbin.getFieldColumns();
        for (FieldColumn column : fieldColumns) {
            cols.add(column.getColumn());
        }
        SimpleExportService service = new SimpleExportService(sheet, list, (String[]) cols.toArray(new String[]{}), "學校課程");
        service.setDic("KCLX", "KCLX").addDic("KCLX", "1", "國家課程").addDic("KCLX", "2", "學校課程");//設置數據字典
        service.doExport();
    }
    /**
     * 從List<Vo>中導出
     * @param workbook
     * @throws Exception
     */
    public static void testSimpleVoExport(Workbook workbook) throws Exception {
        Hyberbin<SchoolCourse> hyberbin = new Hyberbin(new SchoolCourse());
        List<SchoolCourse> list = hyberbin.showAll();
        Sheet sheet = workbook.createSheet("testSimpleVoExport");
        //ExportExcelService service = new ExportExcelService(list, sheet, "學校課程");
        ExportExcelService service = new ExportExcelService(list, sheet, new String[]{"id", "courseName", "type"}, "學校課程");
        service.addDic("KCLX", "1", "國家課程").addDic("KCLX", "2", "學校課程");//設置數據字典
        service.doExport();
    }
    /**
     * 從List<Vo>,vo中還有簡單循環節中導出
     * @param workbook
     * @throws Exception
     */
    public static void testVoHasListExport(Workbook workbook) throws Exception {
        Hyberbin<SchoolCourse> hyberbin = new Hyberbin(new SchoolCourse());
        List<SchoolCourse> list = hyberbin.showAll();
        List<String> strings = new ArrayList<String>();
        for (int i = 0; i < 10; i++) {
            strings.add("我是第" + i + "個循環字段");
        }
        for (SchoolCourse course : list) {
            course.setBaseArray(strings);
        }
        Sheet sheet = workbook.createSheet("testVoHasListExport");
        ExportExcelService service = new ExportExcelService(list, sheet, new String[]{"id", "courseName", "type", "baseArray"}, "學校課程");
        service.addDic("KCLX", "1", "國家課程").addDic("KCLX", "2", "學校課程");//設置數據字典
        service.setGroupConfig("baseArray", new GroupConfig(10) {
            @Override
            public String getLangName(int innerIndex, int index) {
                return "我是第" + index + "個循環字段";
            }
        });
        service.doExport();
        service.exportTemplate();//生成下拉框
    }
    /**
     * 從List<Vo>,vo中還有復雜循環節中導出
     * @param workbook
     * @throws Exception
     */
    public static void testVoHasListVoExport(Workbook workbook) throws Exception {
        Hyberbin<SchoolCourse> hyberbin = new Hyberbin(new SchoolCourse());
        List<SchoolCourse> list = hyberbin.showAll();
        for (SchoolCourse course : list) {
            List<InnerVo> innerVos = new ArrayList<InnerVo>();
            for (int i = 0; i < 10; i++) {
                innerVos.add(new InnerVo("key1", "value1"));
            }
            course.setInnerVoArray(innerVos);
        }
        Sheet sheet = workbook.createSheet("testVoHasListVoExport");
        ExportExcelService service = new ExportExcelService(list, sheet, new String[]{"id", "courseName", "type", "innerVoArray"}, "學校課程");
        service.addDic("KCLX", "1", "國家課程").addDic("KCLX", "2", "學校課程");//設置數據字典
        for (int i = 0; i < 10; i++) {
            service.addTook("hiddenvalue", "key", i, "something");
        }
        service.setGroupConfig("innerVoArray", new GroupConfig(2, 10) {
            @Override
            public String getLangName(int innerIndex, int index) {
                return "我是第" + index + "個循環字段,第" + innerIndex + "個屬性";
            }
        });
        service.doExport();
    }
    /**
     * 導出一個縱表(課程表之類的)
     * @param workbook
     * @throws Exception
     */
    public static void testTableExport(Workbook workbook) throws Exception {
        Sheet sheet = workbook.createSheet("testTableExport");
        TableBean tableBean = new TableBean(3, 3);
        Collection<CellBean> cellBeans = new HashSet<CellBean>();
        for (int i = 0; i < 3; i++) {
            for (int j = 0; j < 3; j++) {
                CellBean cellBean = new CellBean(i * 3 + j + "", i, j);
                cellBeans.add(cellBean);
            }
        }
        tableBean.setCellBeans(cellBeans);
        ExportTableService tableService = new ExportTableService(sheet, tableBean);
        tableService.doExport();
    }
    /**
     * 從List<Vo>中入
     * @param workbook
     * @throws Exception
     */
    public static void testSimpleVoImport(Workbook workbook) throws Exception {
        Sheet sheet = workbook.getSheet("testSimpleVoExport");
        ImportExcelService service = new ImportExcelService(SchoolCourse.class, sheet);
        service.addDic("KCLX", "1", "國家課程").addDic("KCLX", "2", "學校課程");//設置數據字典
        List list = service.doImport();
        System.out.println("成功導入:" + list.size() + "條數據");
    }
    /**
     * 從List<Vo>,vo中還有簡單循環節中導入
     * @param workbook
     * @throws Exception
     */
    public static void testVoHasListImport(Workbook workbook) throws Exception {
        Sheet sheet = workbook.getSheet("testVoHasListExport");
        ImportExcelService service = new ImportExcelService(SchoolCourse.class, sheet);
        service.addDic("KCLX", "1", "國家課程").addDic("KCLX", "2", "學校課程");//設置數據字典
        List list = service.doImport();
        System.out.println("成功導入:" + list.size() + "條數據");
    }
    /**
     * 從List<Vo>,vo中還有復雜循環節中導入
     * @param workbook
     * @throws Exception
     */
    public static void testVoHasListVoImport(Workbook workbook) throws Exception {
        Sheet sheet = workbook.getSheet("testVoHasListVoExport");
        ImportExcelService service = new ImportExcelService(SchoolCourse.class, sheet);
        service.addDic("KCLX", "1", "國家課程").addDic("KCLX", "2", "學校課程");//設置數據字典
        List list = service.doImport();
        System.out.println("成功導入:" + list.size() + "條數據");
    }
    public static void main(String[] args) throws Exception {
        Workbook workbook = new HSSFWorkbook();
        testSimpleMapExport(workbook);
        testSimpleVoExport(workbook);
        testVoHasListExport(workbook);
        testVoHasListVoExport(workbook);
        testTableExport(workbook);
        testSimpleVoImport(workbook);
        testVoHasListImport(workbook);
        testVoHasListVoImport(workbook);
        workbook.write(new FileOutputStream("D:\\excel.xls"));
    }
    }

    項目主頁:http://www.baiduhome.net/lib/view/home/1413641011465

 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!