java poi 模板 导出_java poi 从服务器下载模板写入数据再导出
最近写了一个,Excel 的 写入和导出. 需求是这样的. 在新建合同的时候,会有导出合同的数据, 导出的模板是固定的,,需要在模板里面写入合同的信息.
first : 下载模板 > 写入数据 > 输出
下载模板 :
StringBuilder path = new StringBuilder("");
path.append(request.getSession().getServletContext().getRealPath(""));
path.append(File.separator);
path.append("WEB-INF");
path.append(File.separator);
path.append("classes");
path.append(File.separator);
path.append("template");
path.append(File.separator);
String filePath=path.toString()+"\\"+"contractDemo.xlsx"; //这是获取jboss服务器上的模板路径
FileInputStream fis=newFileInputStream(filePath); XSSFWorkbook workBook=newXSSFWorkbook(fis); // 新建一个workBook 用来新建Excel 的sheet
// 这个是下载和输出excel excel写入数据 是在另一个方法里面写着的 ,方法分开来写比较清晰.
try{
StringBuilder path = new StringBuilder("");
path.append(request.getSession().getServletContext().getRealPath(""));
path.append(File.separator);
path.append("WEB-INF");
path.append(File.separator);
path.append("classes");
path.append(File.separator);
path.append("template");
path.append(File.separator);
String filePath=path.toString()+"\\"+"contractDemo.xlsx"; // 服务器上的模板路径
FileInputStream fis = new FileInputStream(filePath); // 输入流
XSSFWorkbook workBook=new XSSFWorkbook(fis);
String fileName="test_"+System.currentTimeMillis()+".xlsx";
OutputStream out=new FileOutputStream("d:/"+fileName);
contractExportTemplate.createSheet(workBook,vo,conf);
workBook.setForceFormulaRecalculation(true);
workBook.write(out);
fis.close();
out.flush();
out.close();
return "success";
}catch(Exception e){
e.printStackTrace();
return "error";
}
// 下面的代码其实就是在excel 里面写入数据,我是根据模板来写的,所以sheet 表里面的格式都是固定的.我只要获取具体的单元格然后写入数据就可以了.
//给excel表添加数据
public void excelContractWriteData(XSSFWorkbook workBook,XSSFSheet sheet, List conList1,
List conList2,List conList3) throws Exception{
if(conList1.size()!=0){
XSSFRow row0=sheet.getRow(0);
row0.getCell(2).setCellValue(conList1.get(0).getTaskId()+""+
(conList1.get(0).getPrintSeqNo()==null?"1":conList1.get(0).getPrintSeqNo()));//写入打印编号
XSSFRow row=sheet.getRow(2);
//获取sheet表的单元格,写入数据
row.getCell(2).setCellValue(conList1.get(0).getYear());
row.getCell(4).setCellValue(conList1.get(0).getCatlgId());
row.getCell(6).setCellValue(conList1.get(0).getSupNo());
}
if(conList2.size()!=0){
for( ContractExcelGroupByAreaVo vo :conList2){
if(vo.getAreaName()!="" && "华东".equals(vo.getAreaName().toString()))
{
sheet.getRow(6).getCell(2).setCellValue(vo.getStoreNum());
sheet.getRow(6).getCell(3).setCellValue(vo.getTargetNum());
}
if(vo.getAreaName()!="" && "西南".equals(vo.getAreaName().toString()))
{
sheet.getRow(7).getCell(2).setCellValue(vo.getStoreNum());
sheet.getRow(7).getCell(3).setCellValue(vo.getTargetNum());
}
if(vo.getAreaName()!="" && "华北".equals(vo.getAreaName().toString()))
{
sheet.getRow(8).getCell(2).setCellValue(vo.getStoreNum());
sheet.getRow(8).getCell(3).setCellValue(vo.getTargetNum());
}
if(vo.getAreaName()!="" && "华南".equals(vo.getAreaName().toString()))
{
sheet.getRow(9).getCell(2).setCellValue(vo.getStoreNum());
sheet.getRow(9).getCell(3).setCellValue(vo.getTargetNum());
}
if(vo.getAreaName()!="" && "华中".equals(vo.getAreaName().toString()))
{
sheet.getRow(10).getCell(2).setCellValue(vo.getStoreNum());
sheet.getRow(10).getCell(3).setCellValue(vo.getTargetNum());
}
}
}
if(conList3.size()!=0){
int rowIndex=14; //这个数字是根据excel模板定的
for(ContractExcelGroupByStoreVo conExcel : conList3){
sheet.getRow(rowIndex).getCell(1).setCellValue(conExcel.getAreaName());
sheet.getRow(rowIndex).getCell(2).setCellValue(conExcel.getProvinceName());
sheet.getRow(rowIndex).getCell(3).setCellValue(conExcel.getCityName());
sheet.getRow(rowIndex).getCell(4).setCellValue(conExcel.getStoreNum()+"-"+conExcel.getStoreName()); //门店的编号
sheet.getRow(rowIndex).getCell(5).setCellValue(conExcel.getStoreAmount());
sheet.getRow(rowIndex).getCell(6).setCellValue(conExcel.getMemo());
if(conExcel.getServReqd()!=null){
String month= conExcel.getServReqd().toString();
sheet.getRow(rowIndex).getCell(7).setCellValue(this.stringtoIntArray(month));
}else{
sheet.getRow(rowIndex).getCell(7).setCellValue(conExcel.getDateStr());
}
rowIndex++;
}
}
}
// 这里是一个排序, 月份有 1 2 3 4 5 6 7 8 9 10 11 12 但是每次出现的月份是不固定的 可能中间会有断开的月份. 所以需要先排序然后 判断 第二个数和第一个数相差多少, 如果相差大于2的话就说明 月份中间是有断开的.那就把连续的几个数的头尾 用字符串拼接起来,显示
//把 月份数组转换为字符串
public String stringtoIntArray(String str) {
StringBuffer dateStage= new StringBuffer("");
String strs[] = str.split(",");
int array[] = new int[strs.length];
for(int i=0;i
array[i]=Integer.parseInt(strs[i]);
}
for (int i = 0; i < array.length; i++) {
for(int j = 0; j
if(array[j]>array[j+1]){
int temp = array[j];
array[j] = array[j+1];
array[j+1] = temp;
}
}
}
int a=array[0];
for (int j = 1; j < array.length; j++) {
if(array[j] - array[j-1]>=2){
dateStage.append(""+a+"-"+array[j-1]+",");
a=array[j];
}
if(j==(array.length-1)){
dateStage.append(""+a+"-"+array[j]);
}
}
return dateStage.toString();
}
java poi 模板 导出_java poi 从服务器下载模板写入数据再导出相关推荐
- poi读取excel多层表头模板写入数据并导出
poi读取excel多层表头模板写入数据并导出 这两天刚好写excel,写了一份自定义表头的,写了一份模板的,这里展示一份读取excel模板写入数据并导出的 //title excel的名称 head ...
- 写网站没有模板?这几个可以下载模板的网站,非常惊艳
写网站没有模板?这几个可以下载模板的网站,非常惊艳 简单粗暴⛽️ HTML5UP 当我第一次打开这个网站的时候,给我惊艳到了,满屏英文丝毫不影响模板的优秀啊
- 向ftp服务器 写入文件失败,关于从FTp服务器取回文件写入数据表时提示:file not found(2)...
当前位置:我的异常网» Delphi » 关于从FTp服务器取回文件写入数据表时提示:file not 关于从FTp服务器取回文件写入数据表时提示:file not found(2) www.myex ...
- java iso8583 socket 服务_JAVA客户端amp;服务器的socket通信
JAVA客户端&服务器的socket通信 socket是两台主机之间的一个连接通道,它可以完成七个基本操作: 发送远程机器 发送数据 接收数据 关闭连接 绑定端口 监听入站数据 再绑定端口上接 ...
- java批量文件打包成压缩成zip下载和大量数据导出excel时的处理方法
对于我们来说,java导出数据成excel或其他数据文件,或者下载资源是开发中的家常便饭, 但是在导出的时候,如果点击一个按钮导出几百万条数据,如果不作处理的话很可能会出现一系列的问题. 这里介绍打包 ...
- 导出多个sheet的Excel以及在服务器上压缩文件然后再导出(在这里是压缩一个excel后导出)
//界面上的导出按钮事件 protected void btnExcelAll_Click(object sender, EventArgs e) { Code.ExcelHelper.ExportE ...
- 哪里有模板建站配云服务器销售,模板建站配云服务器费用
模板建站配云服务器费用 内容精选 换一换 本节操作介绍华为云上云服务器的跨账号跨区域迁移,建议采用镜像迁移方式.服务器迁移的常见场景与常用的迁移方式请参考迁移的背景知识.跨账号跨区域迁移的方法请参考方 ...
- java excel导入前台_java上传excel表格并读取数据返回到前台
如果你对里面的代码不熟悉不知道的话,建议先浏览一遍代码再拿去用, 这里我介绍一下这个过程的思路: 1.定义变量那些就不说了 , 2.首先是上传文件并保存的代码 3.根据excel表的路径来读取文件,之 ...
- java ftp 设置编码_java ftp上传下载,下载文件编码设置
/** * Description: 从FTP服务器下载文件 * @Version1.0 Jul 27, 2008 5:32:36 PM by 崔红保(cuihongbao@d-heaven.com) ...
最新文章
- mysql innerdb 索引_mysql innodb索引原理
- linux下java还原mysql数据库
- springboot创建parent_Springboot 框架整理,建议做开发的都看看,整理的比较详细!...
- Android开发把项目打包成apk
- 【Android】 Android中ListView使用详解
- file命令及Linux重要关键路径介绍
- 批量获取域名解析地址socketthread
- 充满艺术范儿!艺术感在线的界面欣赏
- Atitit 软件理论方面的书籍 目录 1. 计算机科学分为计算机理论和计算机应用。 计算机基础理论包含以下几部分:	2 1.1. ( 1) 程序理论( 程序逻辑、程序正确性验证、形式开发方法等
- 用python编程分苹果_Python实现分苹果(递归)
- word参考文献的引用
- wp8.1 java_巨硬的内部比较——WP8.1版本与WP10系统对比(以lumia640为例)
- CA配置证书自动注册
- jquery fadeOut 异步
- windows7取消隐藏hosts文件的方法
- Mac微信更新 可备份手机聊天记录
- android app生涯
- vsdx是什么格式(图文细解)
- 两个整数的四则运算(python)
- 大众汽车如何在智能电动汽车时代做好汽车安全?