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(有模板)的更多相关文章

  1. jxl导入/导出excel

    1.jxl导入/导出excel案例,黏贴即可运行 package junit.test; import java.io.File; import java.io.IOException; import ...

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

    jxl导入/导出excel 1.jxl导入/导出excel案例,黏贴即可运行 package junit.test; import java.io.File; import java.io.IOExc ...

  3. 1、jxl导入/导出excel案例,黏贴即可运行

    package junit.test; import java.io.File; import java.io.IOException; import java.util.ArrayList; imp ...

  4. java struts jxl 导入导出Excel(无模板)

    jar包: import javax.servlet.http.HttpServletResponse; import java.io.OutputStream; import java.io.Fil ...

  5. 导入导出Excel工具类ExcelUtil

    前言 前段时间做的分布式集成平台项目中,许多模块都用到了导入导出Excel的功能,于是决定封装一个ExcelUtil类,专门用来处理Excel的导入和导出 本项目的持久化层用的是JPA(底层用hibe ...

  6. 导入导出Excel的Java工具类ExcelUtil

    在编写ExcelUtil之前,在网上查了一些资料.java中用来处理Excel的第三方开源项目主要就是POI和JXL.poi功能强大,但是比较耗资源,对于大数据量的导入导出性能不是太好:jxl功能简单 ...

  7. 导入导出Excel文件

    搭建环境 先新建web project ,然后Add Struts Capabilties: 下载导入导出Excel所需的jar包: poi-3.8-20120326.jar包  :  http:// ...

  8. Java基于注解和反射导入导出Excel

    代码地址如下:http://www.demodashi.com/demo/11995.html 1. 构建项目 使用Spring Boot快速构建一个Web工程,并导入与操作Excel相关的POI包以 ...

  9. EasyPOI导入导出Excel

    EasyPOI工具可以方便的写出Excel导出,Excel模板导出,Excel导入,Word模板导出,通过简单的注解和模板 导入maven依赖 <dependency> <group ...

随机推荐

  1. windows server 2008 r2 安裝IE11

    https://support.microsoft.com/en-us/help/2847882/prerequisite-updates-for-internet-explorer-11 https ...

  2. Ajax应用查询员工信息

    首先要用上一篇的步骤启动服务器,建立站点.然后在该站点下创建php文件和html文件. php代码如下,文件名为server.php <?php //设置页面内容是html编码格式是utf-8 ...

  3. Linux文件系统inode、block解释权限(三)

    利用文件系统的inode和block来分析文件(目录)的权限问题. 为什么读取一个文件还要看该文件路径所有目录的权限? 为什么目录的w权限具有删除文件的能力,而文件w权限不行. inode:记录文件的 ...

  4. [问题记录]-技术学习-RocketMQ-全球集群部署问题

    一:问题场景 公司在部署全球的RocketMQ的时候,遇到亚洲区的服务器往欧洲区的RocketMQ发送消息失败的情况. 总共有出现两个问题 1:No Topic Route Info org.apac ...

  5. POJ_3013_最短路

    Big Christmas Tree Time Limit: 3000MS   Memory Limit: 131072K Total Submissions: 23630   Accepted: 5 ...

  6. abstract class和interface 抽象类与接口类的区别

    抽象类与类型定义相关: 接口类与行为规范相关: 接口类不是类型. 抽象类:是不完整的类,函数实现未定义:可以继承,不可以实例化. 接口类:接口类不是类:是类间交互的规范:不能继承.不能实例化,只能实现 ...

  7. CAD全屏显示控件

    主要用到函数说明: MxDrawXCustomFunction::Mx_FullScreen 全屏显示控件,详细说明如下: 参数 说明 int iFull = 2 0: 不完屏,1:全屏,2:自动切换 ...

  8. 救济金发放(The Dole Queue, UVa 133)

    n(n<20)个人站成一圈,逆时针编号为1-n.有两个官员,A从1开始逆时针数,B从n开 始顺时针数.在每一轮中,官员A数k个就停下来,官员B数m个就停下来(注意有可能两个 官员停在同一个人上) ...

  9. 57 和为S的数字

    题目一:和为S的两个数字 输入一个递增排序的数组和一个数字S,在数组中查找两个数,使得他们的和正好是S,如果有多对数字的和等于S,输出两个数的乘积最小的. 输出描述: 对应每个测试案例,输出两个数,小 ...

  10. 18/10/19 周五欢乐赛题解(c++版)

    注意本题解并没有去追求最优解,只是用比较暴力的方法求解.D题听说要改说明不是位数30位,目前除了D题可能有问题之外其他代码已经全部正确. A.查找字串 用string BF(暴力求解即可) 代码 #i ...