最近写了一个,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 从服务器下载模板写入数据再导出相关推荐

  1. poi读取excel多层表头模板写入数据并导出

    poi读取excel多层表头模板写入数据并导出 这两天刚好写excel,写了一份自定义表头的,写了一份模板的,这里展示一份读取excel模板写入数据并导出的 //title excel的名称 head ...

  2. 写网站没有模板?这几个可以下载模板的网站,非常惊艳

    写网站没有模板?这几个可以下载模板的网站,非常惊艳 简单粗暴⛽️ HTML5UP 当我第一次打开这个网站的时候,给我惊艳到了,满屏英文丝毫不影响模板的优秀啊

  3. 向ftp服务器 写入文件失败,关于从FTp服务器取回文件写入数据表时提示:file not found(2)...

    当前位置:我的异常网» Delphi » 关于从FTp服务器取回文件写入数据表时提示:file not 关于从FTp服务器取回文件写入数据表时提示:file not found(2) www.myex ...

  4. java iso8583 socket 服务_JAVA客户端amp;服务器的socket通信

    JAVA客户端&服务器的socket通信 socket是两台主机之间的一个连接通道,它可以完成七个基本操作: 发送远程机器 发送数据 接收数据 关闭连接 绑定端口 监听入站数据 再绑定端口上接 ...

  5. java批量文件打包成压缩成zip下载和大量数据导出excel时的处理方法

    对于我们来说,java导出数据成excel或其他数据文件,或者下载资源是开发中的家常便饭, 但是在导出的时候,如果点击一个按钮导出几百万条数据,如果不作处理的话很可能会出现一系列的问题. 这里介绍打包 ...

  6. 导出多个sheet的Excel以及在服务器上压缩文件然后再导出(在这里是压缩一个excel后导出)

    //界面上的导出按钮事件 protected void btnExcelAll_Click(object sender, EventArgs e) { Code.ExcelHelper.ExportE ...

  7. 哪里有模板建站配云服务器销售,模板建站配云服务器费用

    模板建站配云服务器费用 内容精选 换一换 本节操作介绍华为云上云服务器的跨账号跨区域迁移,建议采用镜像迁移方式.服务器迁移的常见场景与常用的迁移方式请参考迁移的背景知识.跨账号跨区域迁移的方法请参考方 ...

  8. java excel导入前台_java上传excel表格并读取数据返回到前台

    如果你对里面的代码不熟悉不知道的话,建议先浏览一遍代码再拿去用, 这里我介绍一下这个过程的思路: 1.定义变量那些就不说了 , 2.首先是上传文件并保存的代码 3.根据excel表的路径来读取文件,之 ...

  9. java ftp 设置编码_java ftp上传下载,下载文件编码设置

    /** * Description: 从FTP服务器下载文件 * @Version1.0 Jul 27, 2008 5:32:36 PM by 崔红保(cuihongbao@d-heaven.com) ...

最新文章

  1. mysql innerdb 索引_mysql innodb索引原理
  2. linux下java还原mysql数据库
  3. springboot创建parent_Springboot 框架整理,建议做开发的都看看,整理的比较详细!...
  4. Android开发把项目打包成apk
  5. 【Android】 Android中ListView使用详解
  6. file命令及Linux重要关键路径介绍
  7. 批量获取域名解析地址socketthread
  8. 充满艺术范儿!艺术感在线的界面欣赏
  9. Atitit 软件理论方面的书籍 目录 1. 计算机科学分为计算机理论和计算机应用。 计算机基础理论包含以下几部分: 2 1.1. ( 1) 程序理论( 程序逻辑、程序正确性验证、形式开发方法等
  10. 用python编程分苹果_Python实现分苹果(递归)
  11. word参考文献的引用
  12. wp8.1 java_巨硬的内部比较——WP8.1版本与WP10系统对比(以lumia640为例)
  13. CA配置证书自动注册
  14. jquery fadeOut 异步
  15. windows7取消隐藏hosts文件的方法
  16. Mac微信更新 可备份手机聊天记录
  17. android app生涯
  18. vsdx是什么格式(图文细解)
  19. 两个整数的四则运算(python)
  20. 大众汽车如何在智能电动汽车时代做好汽车安全?

热门文章

  1. 此心光明,亦复何言——读《五百年来王阳明》
  2. ISE14.7联合Modelsim10.1a设置
  3. 中国物联网产业将迎大爆发
  4. 全球及中国物联网智能模组行业前景动态及未来趋势展望报告(2022-2027年)
  5. 计算机新安装系统后桌面上有什么图标,新安装好的电脑系统没有桌面图标?
  6. 【mac】mac设置鼠标习惯
  7. 09_数据结构与算法_选择排序_Python实现
  8. 前端安全-CSRF攻击,sql注入,点击劫持
  9. wifi 最大传输速率
  10. Unity打包H5 网页全屏