对于导入导出各个项目中差点儿都会用到,记得在高校平台中封装过导入导出这部分今天看了看是利用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里面写代码,简单有用的一个小框架。

最新文章

  1. [APUE]系统数据文件与信息
  2. 第二章 NIO入门
  3. 【转】Linux时间函数之gettimeofday()函数之使用方法
  4. 【C语言】-循环的嵌套
  5. 使用text-overflow:ellipsis对溢出文本显示省略号有两个好处
  6. MTRR内存类型范围寄存器
  7. 为什么 var_dump(&quot;1&quot; == &quot;1e0&quot;); 的结果为true
  8. android 在你的UI中显示Bitmap - 开发文档翻译
  9. JVM(四)内存回收(二)
  10. pytroch nn.Module源码解析(1)
  11. 末学者笔记--Linux中RAID磁盘阵列及centos7启动过程
  12. redis_哈希对象
  13. SpringMvc整合Mybatis并使用声明式事务
  14. mysql语句判断是否存在记录,没有则插入新纪录否则不执行
  15. unity, dll is not allowed to be included or could not be found
  16. centos7下部署elasticSearch集群
  17. C# 获取SQL Server所有的数据库名称
  18. NEXYS 3开发板练手--USB UART(二)
  19. 使用IDEA创建SpringBoot自定义注解
  20. Idea Ant 打开发包

热门文章

  1. javaweb学习总结(三十六)——使用JDBC进行批处理
  2. ANDROID_MARS学习笔记_S01原始版_021_MP3PLAYER001_下载mp3文件
  3. 《ArcGIS Engine+C#实例开发教程》第四讲 状态栏信息的添加与实现
  4. ArcGIS Engine Style文件操作
  5. Android 常用UI控件之TabHost(4)实现当Tab栏有多个tab时,可以左右滑动
  6. BZOJ_1620_[Usaco2008_Nov]_Time_Management_时间管理_(二分+贪心)
  7. vijosP1567子串计数
  8. 【转】Optiplex 7010驱动下载链接(XP&amp;Windows7
  9. 使用Chrome测试页面响应性
  10. linux cross toolsChain 交叉编译 ARM(转)