1、导入

    @Overridepublic String importBusinessScope(File file, String unit_id) throws Exception {Workbook wb = Workbook.getWorkbook(file);// 从文件流中取得Excel工作区对象Sheet sheet = wb.getSheet(0);Range[] rangeCell = sheet.getMergedCells();// 合并单元格
StringBuilder validateMessage = new StringBuilder();BusinessScopeItem businessScopeItem = null;BusinessScopeSubItem businessScopeSubItem = null;List<BusinessScopeSubItem> businessScopeSubItemList = new ArrayList<>();for (int i = 4; i < sheet.getRows(); i++) {businessScopeItem = new BusinessScopeItem();businessScopeSubItem = new BusinessScopeSubItem();// 事项String item_id = "";String item = sheet.getCell(1, i).getContents();for (Range r : rangeCell) {if (i > r.getTopLeft().getRow() && i <= r.getBottomRight().getRow() && 1 >= r.getTopLeft().getColumn()&& 1 <= r.getBottomRight().getColumn()) {item = sheet.getCell(r.getTopLeft().getColumn(), r.getTopLeft().getRow()).getContents();}}businessScopeItem.setItem(item);businessScopeItem.setIsdel("0");List<BusinessScopeItem> businessScopeItemList = businessScopeItemDao.selectAllItemList(businessScopeItem);if (businessScopeItemList != null && businessScopeItemList.size() > 0) {item_id = businessScopeItemList.get(0).getItem_id();} else {businessScopeItem.setUnit_id(unit_id);businessScopeItem.setCreatedate(DateTime.toLocaleStringYYYYMMDD());item_id = businessScopeItemDao.insertItem(businessScopeItem);}// 子事项String subitem = sheet.getCell(2, i).getContents();for (Range r : rangeCell) {if (i > r.getTopLeft().getRow() && i <= r.getBottomRight().getRow() && 2 >= r.getTopLeft().getColumn()&& 2 <= r.getBottomRight().getColumn()) {subitem = sheet.getCell(r.getTopLeft().getColumn(), r.getTopLeft().getRow()).getContents();}}businessScopeSubItem.setItem_id(item_id);businessScopeSubItem.setSubitem(subitem);businessScopeSubItem.setIsdel("0");int count = businessScopeSubItemDao.selectCountSubItemByItemAndSubItem(businessScopeSubItem);if (count > 0) {validateMessage.append("第").append(i + 1).append("行,事项(").append(item).append(")和子事项(").append(subitem).append(")已存在;");} else {businessScopeSubItem.setItem(item);}// 主要内容String content = sheet.getCell(3, i).getContents();for (Range r : rangeCell) {if (i > r.getTopLeft().getRow() && i <= r.getBottomRight().getRow() && 3 >= r.getTopLeft().getColumn()&& 3 <= r.getBottomRight().getColumn()) {content = sheet.getCell(r.getTopLeft().getColumn(), r.getTopLeft().getRow()).getContents();}}businessScopeSubItem.setContent(content);// 实施依据String rules = sheet.getCell(4, i).getContents();for (Range r : rangeCell) {if (i > r.getTopLeft().getRow() && i <= r.getBottomRight().getRow() && 4 >= r.getTopLeft().getColumn()&& 4 <= r.getBottomRight().getColumn()) {rules = sheet.getCell(r.getTopLeft().getColumn(), r.getTopLeft().getRow()).getContents();}}businessScopeSubItem.setRules(rules);// 实施期限String limitdate = sheet.getCell(5, i).getContents();for (Range r : rangeCell) {if (i > r.getTopLeft().getRow() && i <= r.getBottomRight().getRow() && 5 >= r.getTopLeft().getColumn()&& 5 <= r.getBottomRight().getColumn()) {limitdate = sheet.getCell(r.getTopLeft().getColumn(), r.getTopLeft().getRow()).getContents();}}businessScopeSubItem.setLimitdate(limitdate);// 创建日期
            businessScopeSubItem.setCreatedate(DateTime.toLocaleStringYYYYMMDD());businessScopeSubItemList.add(businessScopeSubItem);}wb.close();if (validateMessage.length() > 0) {return validateMessage.toString();} else {for (BusinessScopeSubItem subItem : businessScopeSubItemList) {businessScopeSubItemDao.insertSubItem(subItem);}}return "0";}

View Code

2、导出

    @Overridepublic String exportBusinessScope(BusinessScopeItem businessScopeItem, HttpServletResponse response)throws Exception {// 获取导出数据List<BusinessScopeItem> businessScopeItemList = businessScopeItemDao.selectAllBusinessScopeList(businessScopeItem);if (businessScopeItemList != null && businessScopeItemList.size() > 0) {// 模板入径String templePath = getClass().getResource("/").getPath();int index = templePath.indexOf("WebContent");templePath = templePath.substring(0, index + 10) + "/website/enroll/businessscope/businessScopeModel.xls";// 读取模板文件Workbook wb = Workbook.getWorkbook(new File(templePath));// 取得输出流OutputStream os = response.getOutputStream();// 清空输出流
            response.reset();// 下面是对中文文件名的处理,设置相应内容的编码格式response.setCharacterEncoding("UTF-8");// 设置文件的默认文件名response.setHeader("Content-Disposition", "attachment;filename=businessScopeModel.xls");// 定义输出类型response.setContentType("application/msexcel");// 建立Excel文件WritableWorkbook book = Workbook.createWorkbook(os, wb);// 通过索引,获取模板文件中的sheet页第一页WritableSheet sheet = book.getSheet(0);// 实例化表格格式// 设置单元格纵横居中WritableCellFormat wcfCenter = new WritableCellFormat();wcfCenter.setAlignment(Alignment.CENTRE);wcfCenter.setVerticalAlignment(VerticalAlignment.CENTRE);// 是否自动换行wcfCenter.setWrap(true); // 设置表格线为细线,黑色
            wcfCenter.setBorder(Border.ALL, BorderLineStyle.THIN, Colour.BLACK);// 设置单元格水平靠左,上下居中WritableCellFormat wcfLeft = new WritableCellFormat();wcfLeft.setAlignment(Alignment.LEFT);wcfLeft.setVerticalAlignment(VerticalAlignment.CENTRE);// 是否自动换行wcfLeft.setWrap(true); // 设置表格线为细线,黑色
            wcfLeft.setBorder(Border.ALL, BorderLineStyle.THIN, Colour.BLACK);// 写入Excelint i = 4;int seq = 0;for (BusinessScopeItem item : businessScopeItemList) {List<BusinessScopeSubItem> businessScopeSubItemList = item.getBusinessScopeSubItemList();int subItemCount = 0;if (businessScopeSubItemList != null && businessScopeSubItemList.size() > 0) {subItemCount = businessScopeSubItemList.size() -1;}// 是否需要合并单元格if (subItemCount > 0) {// 设置第1列、第4行到第1列、第subItemCount行合并sheet.mergeCells(0, i, 0, i + subItemCount);sheet.mergeCells(1, i, 1, i + subItemCount);}// 序号seq++;// 实例化单元格内容,并应用样式对单元格进行处理Label label_Seq = new Label(0, i, String.valueOf(seq), wcfCenter);// 将内容添加入单元格中
                sheet.addCell(label_Seq);// 事项Label label_item = new Label(1, i, item.getItem(), wcfCenter);sheet.addCell(label_item);// 子事项相关信息if (businessScopeSubItemList != null) {int j = i;for (BusinessScopeSubItem subItem : businessScopeSubItemList) {// 子事项Label label_subitem = new Label(2, j, subItem.getSubitem(), wcfCenter);sheet.addCell(label_subitem);// 主要内容Label label_content = new Label(3, j, subItem.getContent(), wcfLeft);sheet.addCell(label_content);// 实施依据Label label_rules = new Label(4, j, subItem.getRules(), wcfLeft);sheet.addCell(label_rules);// 实施期限Label label_limitdate = new Label(5, j, subItem.getLimitdate(), wcfCenter);sheet.addCell(label_limitdate);// 重定向行j++;}}// 重定向行i += subItemCount + 1;}// 尾部// 设置行高sheet.setRowView(i, 1500, false);// 合并单元格sheet.mergeCells(0, i, 1, i);sheet.mergeCells(2, i, 5, i);// 填充数据Label label_bottom1 = new Label(0, i, "举办单位审核意见", wcfCenter);sheet.addCell(label_bottom1);// 设置单元格水平靠右,垂直靠下WritableCellFormat wcfBottom = new WritableCellFormat();wcfBottom.setAlignment(Alignment.RIGHT);wcfBottom.setVerticalAlignment(VerticalAlignment.BOTTOM);// 是否自动换行wcfBottom.setWrap(true);// 设置表格线为细线,黑色
            wcfBottom.setBorder(Border.ALL, BorderLineStyle.THIN, Colour.BLACK);Calendar calendar = Calendar.getInstance();String year = String.valueOf(calendar.get(Calendar.YEAR));Label label_bottom2 = new Label(2, i, "(公章)                          \r\n" + year + "年    月    日                    \r\n", wcfBottom);sheet.addCell(label_bottom2);book.write();// 写入表格book.close();// 结束表格编写os.close();// 关闭数据流} else {return "没有数据!";}return "0";}

View Code

转载于:https://www.cnblogs.com/BobXie85/p/9474268.html

jxl 导入导出Excel(有模板)相关推荐

  1. jxl导入/导出excel(网上的案例)

    假如你现在还在为自己的技术担忧,假如你现在想提升自己的工资,假如你想在职场上获得更多的话语权,假如你想顺利的度过35岁这个魔咒,假如你想体验BAT的工作环境,那么现在请我们一起开启提升技术之旅吧,详情 ...

  2. jxl导入/导出Excel

    About jxl is a pure java 5 super-project that includes Enclosure, Peermi, Enshell, and Xlp. jxl & ...

  3. jxl导入/导出Excel(Maven)

    About jxl is a pure java 5 super-project that includes Enclosure, Peermi, Enshell, and Xlp. jxl & ...

  4. C#读写导入导出Excel表格模板(NPOI)

    NPOI介绍: NPOI是指构建在POI 3.x版本之上的一个程序,NPOI可以在没有安装Office的情况下对Word或Excel文档进行读写操作. NPOI是一个开源的C#读写Excel.WORD ...

  5. csv和excel php 解析_PHP 高效导入导出Excel(csv)方法之fgetcsv()和fputcsv()函数

    CSV,是Comma Separated Value(逗号分隔值)的英文缩写,通常都是纯文本文件. 一.CSV数据导入函数fgetcsv() fgetcsv() 函数从文件指针中读入一行并解析 CSV ...

  6. java导入导出excel操作(jxl)

    java导入导出excel操作(jxl) Java解释Excel数据(jxl.jar包的使用) 关键字: java excel jxl.jar jxl.jar 包 下载地址: http://www.a ...

  7. java excel data 导入数据_java实现导入导出excel数据

    项目需要,要实现一个导入导出excel的功能,于是,任务驱动着我学习到了POI和JXL这2个java操作Excel的插件. 一.POI和JXL介绍 1.POI:是对所有office资源进行读写的一套工 ...

  8. 使用EasyPoi轻松导入导出Excel文档

    提到Excel的导入导出,大家肯定都知道alibaba开源的EasyExcel,该项目的github地址为:https://github.com/alibaba/easyexcel. 这个项目非常活跃 ...

  9. 使用EasyPoi导入导出Excel

    easypoi功能如同名字easy,主打的功能就是容易,让一个没见接触过poi的人员 就可以方便的写出Excel导出,Excel模板导出,Excel导入,Word模板导出,通过简单的注解和模板 语言( ...

  10. java 动态导入excel_java实现导入导出excel数据

    项目需要,要实现一个导入导出excel的功能,于是,任务驱动着我学习到了POI和JXL这2个java操作Excel的插件. 一.POI和JXL介绍 1.POI:是对所有office资源进行读写的一套工 ...

最新文章

  1. 一些JSON相关的函数
  2. Vue_VueRouter
  3. abaqus中元素过度失真是什么意思_Abaqus三维多晶体脚本建模Voronoi多面体建模
  4. 全平台硬件解码渲染方法与优化实践
  5. struts2加入自定义的actionValidatorManager实现类
  6. Kotlin binding+RecyclerView实现支付宝首页更多、应用编辑界面
  7. jvm垃圾回收之类加载机制
  8. Oracle listener lsnrctl
  9. 为热门项目 若依(ruoyi) 添加请求日志输出
  10. obd协议 混动车_最新人工智能驾考系统OBD信号采集模块
  11. wap网站制作教程,Github标星5.3K
  12. android libpng16,Android NDK 开发之 CMake 编译 libpng
  13. [黑苹果]简单修改FB实现显存增加至2048MB修复某些花屏
  14. Mixly-数位计及1602屏亮度显示
  15. 一次系统宕机认识系统日志
  16. 去掉电脑桌面图标中的箭头图标
  17. 9月24号面试总结(康拓普2面)
  18. 【5G核心网】free5GC UPF源码分析
  19. 风场可视化与原理剖析
  20. 第一个被赋予公明身份的机器人_世界首位获公民身份机器人索菲亚,称要结婚生子毁灭人类...

热门文章

  1. R语言学习历程回顾总结
  2. com.mysql.jdbc.connection和java.sql.connection的区别
  3. python生成器的惰性计算
  4. 关于暂停或终止更新的相关读书笔记
  5. Android KLog源代码分析
  6. bzoj3714 [PA2014]Kuglarz
  7. JSONObject对象和JSONArray对象的使用
  8. 使用Spring.Net进行Webservice开发发布遇到的问题
  9. ASP.NET 4.0事件消息: 发生了验证错误;检测到有潜在危险的 Request.Form 值。
  10. godaddy虚拟主机access数据库中文乱码的解决方法