【背景】

由于各户的需求,所以需要增加导出excel这个功能,其实大部分系统都需要这个导出功能的,所以这里也就不详细说明具体导出的背景了O(∩_∩)O~

干完导出excel将现有的导出pdf也进行了独立研究与结构实现O(∩_∩)O~

【说明】

这里我是通过poi进行的导出excel的实现,在项目中引入poi-3.7.jar,然后进行编码就可以了~
    要是导出pdf的话,需要引入itextpdf-5.2.1.jar

【实例】

下面是我自己通过main方法实现的小例子,由于没有浏览器的输出,所以我采取的是通过输出到对应的磁盘路径下来实现的。
    导出excel代码如下:

-
// 第一步,创建一个webbook,对应一个Excel文件  HSSFWorkbook workbook = new HSSFWorkbook();  // 第二步,在webbook中添加一个sheet,对应Excel文件中的工作簿,并设置工作簿名称 HSSFSheet sheet = workbook.createSheet("新建表111");  // 第三步,在建立的工作簿中创建一行 HSSFRow row = sheet.createRow(0);  // 第四步,创建该行中的对应列HSSFCell cell = row.createCell(0);// 第五步,向该行该列中设置内容cell.setCellValue("我是设置的内容信息~");// 第六步,定义输出的位置FileOutputStream out = new  FileOutputStream("H:/workbook.xls");//如果是浏览器通过request请求需要在浏览器中输出则使用下面方式//OutputStream out = response.getOutputStream();workbook.write(out);out.close();System.out.println("导出excel成功~");
-

实现效果如下图:

导出pdf代码如下:

-// 第一步,实例化一个document对象Document document = new Document();// 第二步,设置要到出的路径FileOutputStream out = new  FileOutputStream("H:/workbook111.pdf");//如果是浏览器通过request请求需要在浏览器中输出则使用下面方式//OutputStream out = response.getOutputStream();// 第三步,设置字符BaseFont bfChinese = BaseFont.createFont("STSong-Light", "UniGB-UCS2-H", false);Font fontZH = new Font(bfChinese, 12.0F, 0);// 第四步,将pdf文件输出到磁盘PdfWriter writer = PdfWriter.getInstance(document, out);// 第五步,打开生成的pdf文件document.open();// 第六步,设置内容String title = "标题";document.add(new Paragraph(new Chunk(title, fontZH).setLocalDestination(title)));document.add(new Paragraph("\n"));// 创建table,注意这里的2是两列的意思,下面通过table.addCell添加的时候必须添加整行内容的所有列PdfPTable table = new PdfPTable(2);table.setWidthPercentage(100.0F);table.setHeaderRows(1);table.getDefaultCell().setHorizontalAlignment(1);table.addCell(new Paragraph("序号", fontZH));table.addCell(new Paragraph("结果", fontZH));table.addCell(new Paragraph("1", fontZH));table.addCell(new Paragraph("出来了", fontZH));document.add(table);document.add(new Paragraph("\n"));// 第七步,关闭documentdocument.close();System.out.println("导出pdf成功~");
-

实现效果如下图:

【运用】

当然有了自己写的小例子,通过对业务逻辑的梳理,按照相应要求,和业务逻辑结合,最终实现想要的效果就可以了。
    下面为我定制化编写的一个导出的方法中的代码,其中传入的out为实例中注释掉的第二种方式,在浏览器中输出的方式。
    代码如下:

-
// 第一步,创建一个webbook,对应一个Excel文件 HSSFWorkbook workbook = new HSSFWorkbook();for (TestRangePDFVO testRangePDFVO : list) {//第二步,在webbook中添加一个sheet,对应Excel文件中的工作簿 HSSFSheet sheet = workbook.createSheet(testRangePDFVO.getCaseTitle());//设置sheet中的默认列宽sheet.setDefaultColumnWidth(20);//设置工作簿中的测试用例标题HSSFRow row0 = sheet.createRow(0);HSSFCell cell00 = row0.createCell(0);cell00.setCellValue("测试用例标题");HSSFCell cell01 = row0.createCell(1);cell01.setCellValue(testRangePDFVO.getCaseTitle());//设置工作簿中的测试用例编号HSSFRow row1 = sheet.createRow(1);HSSFCell cell10 = row1.createCell(0);cell10.setCellValue("测试用例编号");HSSFCell cell11 = row1.createCell(1);cell11.setCellValue(testRangePDFVO.getCaseCode());if (testRangePDFVO.getTestRangeStepPDFVOs().size() > 0) {//步骤内容的标头HSSFRow row2 = sheet.createRow(2);HSSFCell cell20 = row2.createCell(0);cell20.setCellValue("序号");HSSFCell cell21 = row2.createCell(1);cell21.setCellValue("步骤");HSSFCell cell22 = row2.createCell(2);cell22.setCellValue("预期结果");HSSFCell cell23 = row2.createCell(3);cell23.setCellValue("操作结果");HSSFCell cell24 = row2.createCell(4);cell24.setCellValue("操作备注");HSSFCell cell25 = row2.createCell(5);cell25.setCellValue("测试人");//将步骤中的数据放入工作簿中for (int i = 0; i < testRangePDFVO.getTestRangeStepPDFVOs().size(); i++) {TestRangeStepPDFVO stepvo =testRangePDFVO.getTestRangeStepPDFVOs().get(i);//步骤内容的标头HSSFRow row = sheet.createRow(i+3);HSSFCell cell0 = row.createCell(0);cell0.setCellValue(i+1);HSSFCell cell1 = row.createCell(1);cell1.setCellValue(stepvo.getContent());HSSFCell cell2 = row.createCell(2);cell2.setCellValue(stepvo.getExpectResult());HSSFCell cell3 = row.createCell(3);String resultType = "△";if (stepvo.getResulttype().equals("0"))resultType = "√";else if (stepvo.getResulttype().equals("1")) {resultType = "╳";}cell3.setCellValue(resultType);HSSFCell cell4 = row.createCell(4);cell4.setCellValue(stepvo.getExecutememo());HSSFCell cell5 = row.createCell(5);cell5.setCellValue(stepvo.getCreatename());}}if (testRangePDFVO.getRangeType() == 1) {//设置数据内容标头HSSFRow row3 = sheet.createRow(4+testRangePDFVO.getTestRangeStepPDFVOs().size());HSSFCell cell30 = row3.createCell(0);cell30.setCellValue("序号");HSSFCell cell31 = row3.createCell(1);cell31.setCellValue("作业面");//标头动态参考列String[] cols = testRangePDFVO.getColumncontent().split("◆");int colsnum = cols.length;for (int i = 0; i < cols.length; i++) {HSSFCell cell32 = row3.createCell(2+i);cell32.setCellValue(cols[i]);}HSSFCell cell33 = row3.createCell(2+colsnum);cell33.setCellValue("操作结果");HSSFCell cell34 = row3.createCell(3+colsnum);cell34.setCellValue("操作备注");HSSFCell cell35 = row3.createCell(4+colsnum);cell35.setCellValue("测试人");//向工作簿中导入数据内容for (int i = 0; i < testRangePDFVO.getTestRangeDataPDFVOs().size(); i++) {TestRangeDataPDFVO datavo = testRangePDFVO.getTestRangeDataPDFVOs().get(i);HSSFRow row = sheet.createRow(5+testRangePDFVO.getTestRangeStepPDFVOs().size()+i);HSSFCell cell0 = row.createCell(0);cell0.setCellValue(i+1);HSSFCell cell1 = row.createCell(1);cell1.setCellValue(datavo.getWorkplanename());//动态列对应的数据String str = datavo.getDatacontents().substring(0, datavo.getDatacontents().length() - 1);String[] datacontents = str.split("◆", -1);int colsnum1 = datacontents.length;for (int j = 0; j < datacontents.length; j++) {HSSFCell cell2 = row.createCell(2+j);cell2.setCellValue(datacontents[j]);}HSSFCell cell3 = row.createCell(2+colsnum1);String resultType = "△";if (datavo.getResulttype().equals("0"))resultType = "√";else if (datavo.getResulttype().equals("1")) {resultType = "╳";}cell3.setCellValue(resultType);HSSFCell cell4 = row.createCell(3+colsnum1);cell4.setCellValue(datavo.getExecutememo());HSSFCell cell5 = row.createCell(4+colsnum1);cell5.setCellValue(datavo.getCreatename());}}}//将excel设置好的数据输出try {workbook.write(out);} catch (IOException e) {e.printStackTrace();}
-

实现效果如下图:

这里就列举了一个导出excel的运用,导出pdf是一样的效果,无非就是将对应的业务逻辑再融入到上面实例中的导出pdf小例子代码中~

【总结】

前行的路上总是会遇到各种各样的风景,要做的是敬请享受的同时切不可过度留恋,否则将会错过未来更好的风景O(∩_∩)O~
    通过自己实现小例子梳理其中的关系,最终融入相关业务逻辑加以践行,这样的一个梳理过程还是很给力的,同时也给小编带来如沐春风的感觉,不知读者您呢?

java通过poi导出excel和pdf相关推荐

  1. java利用poi导出excel功能-附带图片导出

    java利用poi导出excel功能-附带图片导出 写在前面 最近刚离职,闲来无事,于是把上两家公司都有碰到过的需求但都没有去研究实现:即导出带图片的excel报表.于是就折腾了一下这个功能,研究出来 ...

  2. java中poi导出Excel表格(前台流文件接收)

    java中poi导出Excel表格,前端以流的方式接收,而非直接生成文件再下载,解决多台服务器部署后,路径地址不统一导致的下载问题. 生成Excel示例图: 2.代码说明 ① 在上次的基础上增加了底部 ...

  3. Java操作poi导出Excel自定义字体颜色

    Java操作poi导出Excel自定义字体颜色 功能介绍 POI操作Excel 第一步创建一个导出的工具类 整体定义表格字体样式 自定义表格字体样式 总结 功能介绍 Apache POI 是用Java ...

  4. Java和poi导出excel报表

    一:poi jar下载地址:点击打开链接: 二:工程截图: 三:运行效果截图: 四:源代码: Student.java: package com.poi.bean;import java.util.D ...

  5. Java使用POi导出Excel(包含图片)

    Java使用poi组件导出excel报表,能导出excel报表的还可以使用jxl组件,但jxl想对于poi功能有限,jxl应该不能载excel插入浮动层图片,poi能很好的实现输出excel各种功能, ...

  6. java 使用poi导出excel,可控制固定前2列固定标头排版,带统计数据格式的

    使用poi导出排版漂亮的excel文件 html代码: <button class="btn btn-link" ng-model="exportExcel&quo ...

  7. poi导出excel 损坏_急!!!java用poi导出excel文件,打开导出的文件时报错“文件错误,数据可能丢失”...

    展开全部 两个原因: 1.你的excel模版本身有问题,可以尝试新建一个模版. 2.你的excel使用了一e68a8462616964757a686964616f31333365643662些POI不 ...

  8. java使用poi导出Excel表发回浏览器或是保存到本地

    在实际工作中不可避免的会遇上统计.导出报表的工作,我自己整理了一份导出Excel代码放到这里,即为了分享知识,也是对自己的总结 首先导入依赖 <dependency><groupId ...

  9. java使用poi导出excel太慢

    场景是查询数据然后导出excel,接口响应太慢. 处理接口慢,首先要找出哪个环节慢. 打日志看各环节花费时间,10W条数据 关联查询sql花费 3s,导出excel花费5S,响应传输时间很快不是关键问 ...

最新文章

  1. Keil uVision5 下载程序 add flash programming algorithm选项缺少需要的下载算法的解决办法
  2. apache http server指的是什么
  3. XHProf报告字段含义
  4. linux下利用C或C++语言调用需要root权限的函数
  5. Redis java客户端操作
  6. Windows手动更新补丁
  7. 英寸、 Picas、 点、 跨度和 Twips 之间的关系
  8. 【Clickhosue】MySQL 没有主键导致CK不可用 The db.scene cannot be materialized, because there is no primary keys
  9. 【Clickhouse】CLICKHOUSE SQL文件等常用语句
  10. 计算机组成原理课后习题答案(第五版白中英)
  11. mysql安装包5.7.17.0_mysql-5.7.17-winx64压缩版的安装包下载和安装配置
  12. 余额宝收益用计算机该怎么算,余额宝收益计算器怎么用
  13. 用树莓派制作智能小车
  14. 推荐几个资源搜索网站
  15. 小明左右手分别拿了两张牌,黑桃十和红心八,现在交换手中的牌。编写一个程序模拟这一过程:两个整数分别保存两个变量,将这两个变量的值互换,并输出互换后的结果
  16. [渝粤教育] 中国地质大学 大学语文 复习题 (2)
  17. 波士顿房价预测python决策树_机器学习第二练---波士顿房价预测
  18. Staring into the Abyss: An Evaluation of Concurrency Control with One Thousand Cores 论文阅读
  19. IPad amp; iPhone storage - delete my iPad manuscript data
  20. 蓝牙配对-扫描-连接-状态查询

热门文章

  1. z-index诡异事件之背锅侠
  2. Shell 脚本进阶,经典用法及其案例
  3. Xshell的一个轻量且免费的替代品ConEmu
  4. 阿里云-云开发平台存储篇——给应用接上后端存储能力
  5. Jenkins配置报错-Problem accessing /jenkins/. Reason
  6. .Net C# Lambda表达式
  7. matlab实现正割法求根和Aitken加速方法
  8. Hark的数据结构与算法练习之插入排序
  9. 利用pytho绘制九九口诀表
  10. 数字安全证书(CA证书)介绍