对于导入导出各个项目中几乎都会用到,记得在高校平台中封装过导入导出这部分今天看了看是利用JXL封装的而经理说让我用POI写写导出,这两个导入导出框架是目前比较流程和常用的框架,有必要都了解一下。
写了写代码觉得导入导出这一块底层都是一样的,几乎所有的框架和别的牛人也好都是底层利用POI或JXL实现,比的是谁对这部分封装的好而且每个项目中对导入导出具体的细节是不同的,因此,有必要了解了解怎么样操作POI,学学使用它的API做导入导出也许第一步你封装的没有别人那么好,你也会收获很多了解他们封装的思路和想法,你就会去往哪方面思考、学会站在巨人的肩膀上,才能更好的提高,
封装这部分我看看了看大的论坛上面,几年以前甚至十几年前别人就写出了封装很好的工具类,作为我们如果从头开始去写就太傻了。
下面是一个导出的封装的简单工具类,暂时支持单表导出封装还在继续中,觉得思路不错,我们还可以把控制excel的样式、合并单元格、表头、字体等封装起来单独控制,工具类嘛我们需要的功能都可以往里面放。
/**
* @deprecated 讲一个list数组导出到excel
* @param objList
* @param title
* @param strHeader
* @param strField
* @param outputPath
*/
public static void exportExcelByMap(List<Map<String,String>> objList, String title, String strHeader, String strField, String outputPath) {
// 创建工作簿(Excel文件)
HSSFWorkbook workbook = new HSSFWorkbook();
// 创建Excel工作簿的第一个Sheet页
HSSFSheet sheet = workbook.createSheet(title);
// 创建Sheet页的标题行
createHeader(sheet, strHeader);
// 创建Sheet页的填充数据
String[] strArray = strField.split(",");
//外循环为行数、内循环为列数
for(int objIndex = 0; objIndex < objList.size(); objIndex++) {
Map map = objList.get(objIndex);
HSSFRow row = sheet.createRow(objIndex + 1);
for(int i = 0; i < strArray.length; i++) {
HSSFCell cell = row.createCell(i);
cell.setCellType(HSSFCell.CELL_TYPE_STRING);
cell.setCellValue(map.get(strArray[i]).toString());
}
}
//保存Excel文件
saveExcelFile(workbook, outputPath);
}
/**
* @deprecated 根据表做表单创建表单的标题行
* @author lls
* @param sheet 表单对象
* @param strHeader 标题行字符串
*/
private static void createHeader(HSSFSheet sheet, String strHeader){
HSSFRow row = sheet.createRow(0); // 创建该页的一行
HSSFCell cell = null;
//取得标题字段的数组
String[] strArray = strHeader.split(",");
for(int i = 0; i < strArray.length; i++) {
cell = row.createCell(i); // 创建该行的一列
cell.setCellType(HSSFCell.CELL_TYPE_STRING);
cell.setCellValue(strArray[i]);
}
}
上面可以将一个List数组导出到excel,数组里面存放的是map对象,项目里面都是这种结构不需要对查询出来的list再做任务处理就可以转为excel,主要是循环加判断,POI还有很多没用用过,只是简单了解一下实现一个简单的导出类,更多功能还在完善。
也可以利用封装类写一个带窗口的小程序,可以从数据库表中导出到excel,这样的小工具应该也好实现。
类似于JXL、POI这样的框架如果想要实现导入导出的功能实现的代码量还是很多的,有的也很复杂,如果想要excel有各种样式和效果类似预报表的excel会更不好实现,下篇博客给大家介绍一下,更加简洁、更加好用的导出到excel工具,它支持excel模板我们可以直接在excel里面写代码,简单实用的一个小框架。