jxl 导入导出Excel(有模板)
1、导入
- @Override
- public 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";
- }
2、导出
- @Override
- public 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);
- // 写入Excel
- int 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";
- }
jxl 导入导出Excel(有模板)的更多相关文章
- jxl导入/导出excel
1.jxl导入/导出excel案例,黏贴即可运行 package junit.test; import java.io.File; import java.io.IOException; import ...
- jxl导入/导出excel(网上的案例)
jxl导入/导出excel 1.jxl导入/导出excel案例,黏贴即可运行 package junit.test; import java.io.File; import java.io.IOExc ...
- 1、jxl导入/导出excel案例,黏贴即可运行
package junit.test; import java.io.File; import java.io.IOException; import java.util.ArrayList; imp ...
- java struts jxl 导入导出Excel(无模板)
jar包: import javax.servlet.http.HttpServletResponse; import java.io.OutputStream; import java.io.Fil ...
- 导入导出Excel工具类ExcelUtil
前言 前段时间做的分布式集成平台项目中,许多模块都用到了导入导出Excel的功能,于是决定封装一个ExcelUtil类,专门用来处理Excel的导入和导出 本项目的持久化层用的是JPA(底层用hibe ...
- 导入导出Excel的Java工具类ExcelUtil
在编写ExcelUtil之前,在网上查了一些资料.java中用来处理Excel的第三方开源项目主要就是POI和JXL.poi功能强大,但是比较耗资源,对于大数据量的导入导出性能不是太好:jxl功能简单 ...
- 导入导出Excel文件
搭建环境 先新建web project ,然后Add Struts Capabilties: 下载导入导出Excel所需的jar包: poi-3.8-20120326.jar包 : http:// ...
- Java基于注解和反射导入导出Excel
代码地址如下:http://www.demodashi.com/demo/11995.html 1. 构建项目 使用Spring Boot快速构建一个Web工程,并导入与操作Excel相关的POI包以 ...
- EasyPOI导入导出Excel
EasyPOI工具可以方便的写出Excel导出,Excel模板导出,Excel导入,Word模板导出,通过简单的注解和模板 导入maven依赖 <dependency> <group ...
随机推荐
- Web页面使用VLC播放插件
一.原生态Demo下载 选择原因:我们为什么选择VLC播放插件?原因是它支持IE8浏览器播放视频,如果高版本的浏览器大可不必选择该插件,很多html5插件既好用又简单,但是有些交管或政府 部门还是限制 ...
- NHibernate系列学习(一)-看看用NH怎么做增速改查
1.本次所有代码是在一下环境下运行的 学习系统:win8 64bit 开发环境:VS2013,MSSQL2012 NHibernate版本:NHibernate-4.0.3.GA [文章结尾有本次笔记 ...
- PDO访问其他数据库操作及作用
PDO的作用 PDO<!--数据访问抽象层--><!--1.可以访问其他数据库--><!--2.具有事务功能--><!--3.带有预处理语句功能(防止SQL注 ...
- 移动web——bootstrap如何修改原组件
基本介绍 1.bootstrap提供了丰富的组件,但是有时候我们不仅要删除不必要的标签,还需要修改里面的样式 2.我们建议若是修改样式那么最好将源样式从css中拷贝出来,名字换掉,然后修改具体样式,这 ...
- C# call Win32 api时,-1如何转换为DWORD
当使用(uint)-1时,编译器会给出警告:常量-1无法转换为uint,使用unchecked语句重写.DWORD在转换为C#类型时为uint,既然无法使用uint强制转型(-1),那就需要其他办法了 ...
- UIResponder详解
UIResponder Class Reference Managing the Responder Chain 1.- (UIResponder *)nextResponder 返回接收者的下一个相 ...
- linux调试环境时常用的命令 及 常识
1.查找文件或文件夹 所在的目录 sudo find / -name your_filename 示例: wangju@wangju-HP--G4:~$ sudo find / -name .jenk ...
- demo__image_loader
环境 webpack4.x 文件结构 │ package.json │ webpack.config.js │ yarn.lock │ ├─dist │ 1f871aa58.png │ bundle. ...
- jq购物车结算功能
css *{font-style: normal} .gw{margin: 8px;} .gw::after{display: block;clear: both;content: '';margin ...
- 模态框(layer)
推荐一个好看的模态框(layer) 地址:http://layer.layui.com/ 相应列子及配置 全部来自于官网,可直接访问官网学习了解. //信息框-例1 layer.alert('见 ...