1.控制器方法

  1. private URL base = this.getClass().getResource("");
  2.  
  3. /**
  4. * 流拍之后,可以下载询价单
  5. *
  6. * @param id 拍卖id
  7. * @param response
  8. */
  9. @RequestMapping(value="/inquiryDownLoad",method = RequestMethod.GET)
  10. @ResponseBody
  11. public void inquiryDownLoad(String aucId,HttpServletResponse response) {
    //日志记录
  12. if (logger.isDebugEnabled()) {
  13. logger.debug("inquiryDownLoad, aucLotId ", aucId);
  14. }
  15. SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
  16. AucLot aucLot = aucLotRepository.findOne(aucId);
  17. if(aucLot!=null){
  18. SysUser sysUser=sysUserRepository.findOne(aucLot.crtUserId());
  19. AucPrice aucPrice=aucPriceListService.findAucLotCurrentPrice(aucId);
  20. try {
  21. //获取模板文件的目录地址
  22. String fileDir = new File(base.getFile(), "../../../../../../doc/").getCanonicalPath();
  23. //获取模板文件
  24. File demoFile=new File(fileDir + "/inquiryPrice.xls");
  25.  
  26. //这里传入一个空模板
  27. FileInputStream in = new FileInputStream(demoFile);
  28.  
  29. //创建Excel的 JAVA 对象
  30. HSSFWorkbook book = new HSSFWorkbook(in);
  31. HSSFSheet sheet = book.getSheetAt(0);//获取Excel的第一页内容
  32. sheet.protectSheet("123456");//设置Excel编辑密码,没有密码不可以编辑
  33. HSSFRow row = null;
  34. HSSFCell cell=null;
  35.  
  36.           //动态更新特定坐标位置的值
  37. //公司留存 拍卖开始时间
  38. row=sheet.getRow(6);
  39. cell=row.getCell(12);
  40. cell.setCellValue(sdf.format(aucLot.startTime()));
  41. //公司留存委托人姓名and手机号
  42. row=sheet.getRow(9);
  43. cell=row.getCell(11);
  44. cell.setCellValue(aucLot.crtUserName());
  45. row=sheet.getRow(11);
  46. cell=row.getCell(11);
  47. if(sysUser!=null && sysUser.mobile()!=null){
  48. cell.setCellValue(sysUser.mobile().replace(sysUser.mobile().substring(3, 8), "****"));
  49. }
  50. //委托人留存
  51. row=sheet.getRow(35);
  52. cell=row.getCell(11);
  53. cell.setCellValue(aucLot.crtUserName());
  54. row=sheet.getRow(37);
  55. cell=row.getCell(11);
  56. if(sysUser!=null && sysUser.mobile()!=null){
  57. cell.setCellValue(sysUser.mobile().replace(sysUser.mobile().substring(3, 8), "****"));
  58. }
  59. //拍品保留价and最高出价
  60. row=sheet.getRow(21);
  61. cell=row.getCell(29);
  62. cell.setCellValue(aucLot.reservePrice().doubleValue());
  63. row=sheet.getRow(22);
  64. cell=row.getCell(29);
  65. cell.setCellValue(aucPrice.price().doubleValue());
  66.  
  67. //设置下载题头
  68. response.setContentType("application/xls");
  69. String name = java.net.URLEncoder.encode(aucLot.goodsNo()+"测试.xls", "UTF8");
  70. response.addHeader("Content-Disposition", "attachment; filename=" + name);
  71. ByteArrayOutputStream ostream = new ByteArrayOutputStream();
  72. ServletOutputStream servletOS = response.getOutputStream();
  73. book.write(ostream);
  74. servletOS.write(ostream.toByteArray());
  75. servletOS.flush();
  76. servletOS.close();
  77. } catch (IOException e) {
  78. e.printStackTrace();
  79. } catch (Exception e) {
  80. e.printStackTrace();
  81. }
  82. }
  83. }

poi 技术动态更新 Excel模板内容,动态更新内容的更多相关文章

  1. POI技术实现对excel的导出

    需求:客户端传来两个参数,当前页码和每页的条数,根据传来的参数实现对数据的导出 1.导入依赖 <!-- 报表相关 --> <dependency> <groupId> ...

  2. 替换excel模板中的内容并使用JavaMail发送邮件

    由于在公司工作,常年出差,每天都要以日报的形式向公司汇报当天的工作内容.而日报的内容大体上就只有当天工作的主要内容时变化的,其余的都是不变 的. 而我的电脑刚打开excel有点卡,因此决定使用Java ...

  3. poi读取Excel模板并修改模板内容与动态的增加行

    有时候我们可能遇到相当复杂的excel,比如表头的合并等操作,一种简单的方式就是直接代码合并(浪费时间),另一种就是写好模板,动态的向模板中增加行和修改指定单元格数据. 1.一个简单的根据模板shee ...

  4. 利用POI 技术动态替换word模板内容

    项目中需要实现一个功能,动态替换给定模板里面的内容,生成word文档提供下载功能. 中间解决了问题有: 1.页眉的文档logo图片解决,刚开始的时候,HWPFDocument 对象无法读取图片对象(已 ...

  5. java的poi技术下载Excel模板上传Excel读取Excel中内容(SSM框架)

    使用到的jar包 JSP: client.jsp <%@ page language="java" contentType="text/html; charset= ...

  6. Excel模板导出之动态导出

    说明 目前Magicodes.IE已支持Excel模板导出时使用JObject.Dictionary和ExpandoObject来进行动态导出,具体使用请看本篇教程. 本功能的想法.部分实现初步源于a ...

  7. poi读取excel模板,填充内容并导出,支持导出2007支持公式自动计算

    /** * 版权所有(C) 2016 * @author www.xiongge.club * @date 2016-12-7 上午10:03:29 */ package xlsx; /** * @C ...

  8. POI根据EXCEL模板,修改内容导出新EXCEL (只支持HSSF)

    package excelPoiTest; import java.io.File; import java.io.FileInputStream; import java.io.FileOutput ...

  9. MFC编辑框接收数据动态更新与刷新方法代码示例-如何让编辑框内容实时更新

    MFC编辑框接收数据动态更新与刷新方法代码示例-如何让编辑框内容实时更新 关键代码: //发送数据通知 //from txwtech@163.com LRESULT CCommSampleDlg::O ...

随机推荐

  1. 洛谷 P2639 [USACO09OCT]Bessie的体重问题Bessie's We… 题解

    题目传送门 这也是个01背包,只是装的很... #include<bits/stdc++.h> #define MAXN 45010 using namespace std; int f[ ...

  2. 【PAT】1001. 害死人不偿命的(3n+1)猜想 (15)

    1001. 害死人不偿命的(3n+1)猜想 (15) 卡拉兹(Callatz)猜想: 对任何一个自然数n,如果它是偶数,那么把它砍掉一半:如果它是奇数,那么把(3n+1)砍掉一半.这样一直反复砍下去, ...

  3. 【LOJ】 #2132. 「NOI2015」荷马史诗

    题解 k叉哈夫曼树,但是没有了二叉那样的最后一定能合并成一个树根的优秀性质,我们就不断模拟操作看看到了哪一步能用的节点数< k,然后先拿这些节点数合并起来 然后就可以k个k个合并了,大小一样先拿 ...

  4. LoadRunner可以把关联取值当作检查点来使用

    在性能测试过程中,很多人都会想通过使用检查点来检查系统响应是否正常,LR的51Testing软件测试网E$S ]:x(d a6h.G \(y 检查点对“死”的,静态的 可以做到检查作业,但是对于动态时 ...

  5. vue引入Vue-Awesome

    Vue-Awesome建立在Font Awesome上 v4.5.0,取决于Vue.js v2.0.1 +,所以安装了Vue-Awesome就可以直接使用Font Awesome的字体图标. 1.安装 ...

  6. URAL 1997 Those are not the droids you're looking for

    二分图的最大匹配. 每一个$0$与$1$配对,只建立满足时差大于等于$a$或者小于等于$b$的边,如果二分图最大匹配等于$n/2$,那么有解,遍历每一条边输出答案,否则无解. #include< ...

  7. 简单了解Linux的inode与block

    Linux常见文件系统类型:ext3(CentOS5),ext4(CentOS6),xfs(CentOS7) Windows常见文件系统类型:FAT32,NTFS (1).inode的内容 1)ino ...

  8. 扩展swap分区

    swap分区在系统的物理内存不够用时,把硬盘的一部分空间释放出来,以供当前运行的程序使用.(临时使用,如果swap分区都不够了还是直接加内存吧) (1).步骤 mkswap /devices(可以是分 ...

  9. iOS 9音频应用开发基础教程

    iOS 9音频应用开发基础教程(大学霸内部资料)   介绍:iOS 9音频应用开发基础教程(内部资料)是iOS 9音频应用开发专向教程.本书采用Swift 2.0语言开发基于iOS 9的音频应用.实现 ...

  10. [BZOJ4032][HEOI2015]最短不公共子串(Trie+DP)

    在虐各种最长公共子串.子序列的题虐的不耐烦了之后,你决定反其道而行之——被它们虐. 操作一:对A,B分别建SAM,暴力BFS. 操作二:对B建序列自动机或SAM,A在上面暴力匹配. 操作三:对A,B建 ...