POI 在开发中的应用

阅读: 评论:0

POI 在开发中的应用

POI 在开发中的应用

						本文只传递思想,代码需要修改后使用

一 、准备
poi 所需要的jar

二 、使用
1、web层

		//导出Excel功能@RequestMapping("/XXXXX")                               // 排序可删除 **public void queryXXXEx(String sos_name, String sos_nbr,SortBean sortBean,HttpServletResponse response) {			//设置默认排序方式  (可根据自己的需求对数据进行排序) **if(null=&#ColName() || ColName().equals("")) {sortBean.setColName("CREATETIME");}if(null=&#SortMode() || SortMode().equals("")) {sortBean.setSortMode("desc");}String orderByStr = " order by "&#ColName()+" "&#SortMode();// 根据参数查询数据 (请根据自己所需数据进行更改) ** List<Object> XXX = XXXService.findXXX(sos_name, sos_nbr, orderByStr);	PoiTest epte = new PoiTest();// 这里调用excel工具类   进行导出excel  注意参数 请传入自己开发中的数据 **try {epte.ExportXXXToExcel(XXX, response);			log.info("调用导出Excel功能任务成功");} catch (Exception e) {log.info("导出失败!异常信息: "&#Message());e.printStackTrace();}
  1. 工具类
import java.io.OutputStream;
SimpleDateFormat;
import java.util.Date;
import java.util.List;
import javax.servlet.http.HttpServletResponse;
import org.apache.poi.hssf.usermodel.HSSFCell;
import org.apache.poi.hssf.usermodel.HSSFCellStyle;
import org.apache.poi.hssf.usermodel.HSSFRow;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;public class PoiTest {	public void ExportXXXToExcel(List<Object> list,HttpServletResponse response) throws Exception {// 创建一个webbook,对应一个Excel文件HSSFWorkbook wb = new HSSFWorkbook();// 在webbook中添加一个sheet,对应Excel文件中的sheetHSSFSheet sheet = wb.createSheet("XXX任务表");// 在sheet中添加表头第0行,注意老版本poi对Excel的行数列数有限制shortHSSFRow row = ateRow((int) 0);// 创建单元格,并设置值表头 设置表头居中HSSFCellStyle style = wb.createCellStyle();style.setAlignment(HSSFCellStyle.ALIGN_CENTER); // 创建一个居中格式// 设置单元格宽度sheet.setColumnWidth(0, 10000);sheet.setColumnWidth(1, 5000);sheet.setColumnWidth(2, 5000);sheet.setColumnWidth(3, 6000);sheet.setColumnWidth(4, 5000);sheet.setColumnWidth(5, 5000);sheet.setColumnWidth(6, 5000);sheet.setColumnWidth(7, 5000);sheet.setColumnWidth(8, 5000);sheet.setColumnWidth(9, 4000);sheet.setColumnWidth(10,8000);HSSFCell cell = ateCell((int) 0);cell.setCellStyle(style);cell.setCellValue("任务ID");cell.setCellStyle(style);cell = ateCell((int) 1);cell.setCellValue("姓名");cell.setCellStyle(style);cell = ateCell((int) 2);cell.setCellValue("证件类型");cell.setCellStyle(style);cell = ateCell((int) 3);cell.setCellValue("证件号码");cell.setCellStyle(style);cell = ateCell((int) 4);cell.setCellValue("移动电话");cell.setCellStyle(style);cell = ateCell((int) 5);cell.setCellValue("任务创建时间");cell.setCellStyle(style);cell = ateCell((int) 6);cell.setCellValue("任务查询时间");cell.setCellStyle(style);cell = ateCell((int) 7);cell.setCellValue("任务类型");cell.setCellStyle(style);cell = ateCell((int) 8);cell.setCellValue("任务状态");cell.setCellStyle(style);cell = ateCell((int) 9);cell.setCellValue("返回Code");cell.setCellStyle(style);cell = ateCell((int) 10);cell.setCellValue("返回描述");cell.setCellStyle(style);// 写入实体数据 实际应用中这些数据从数据库得到,for (int i = 0; i < list.size(); i++) {row = ateRow((int) i + 1);Object xxEX = (Object) (i);// 第四步,创建单元格,并设置值      此处所获取的值应是开发中所用到的参数  ** ateCell((int) 0).Id());// Cell(0).setCellStyle(style);ateCell((int) 1).Name());// 查询人姓名Cell(1).setCellStyle(style);ateCell((int) 2).Type());// 证件类型Cell(2).setCellStyle(style);ateCell((int) 3).Nbr());// 证件号码Cell(3).setCellStyle(style);ateCell((int) 4).Mobile()); //移动电话Cell(4).setCellStyle(style);ateCell((int) 5).setCellValue(new SimpleDateFormat("yyyy/MM/dd HH:mm:ss").CreateTime()));// 创建时间Cell(5).setCellStyle(style);ateCell((int) 6).UpdateTime()==null?"":new SimpleDateFormat("yyyy/MM/dd HH:mm:ss").UpdateTime()));// 查询时间Cell(6).setCellStyle(style);ateCell((int) 7).setCellValue(Type()));//任务类型Cell(7).setCellStyle(style);ateCell((int) 8).setCellValue(Status()));// 任务状态Cell(8).setCellStyle(style);ateCell((int) 9).Code());// 返回状态码Cell(9).setCellStyle(style);ateCell((int) 10).Desc());// 返回错误描述Cell(10).setCellStyle(style);}// 将文件存到指定位置try {OutputStream out = null;//这里reset() 注意一下 如果是jsp页面 必须要有 不能写在关闭流之后 *********set();response.setContentType("application/msdownload");// 响应编码response.setCharacterEncoding("utf-8");String fileName = "XXX任务表"    // 文件名字 ** + new SimpleDateFormat("yyyyMMddHHmmss").format(new Date())+ ".xls";response.setHeader("Content-Disposition", "attachment; filename=""+ new Bytes("UTF-8"), "ISO-8859-1")+ """);out = OutputStream();wb.write(out);out.close();} catch (Exception e){e.printStackTrace();}}// 获取查询状态     ** 此方法 用于 类型 状态 等需要显示中文信息的转换  ** private static String getStatus(String status) {if (status != null && !"".equals(status)) {if (status.equals("200")) {return "200:查询成功";} else if (status.equals("201")) {return "201:查询失败";}return null;}return null;}
}}

三 、效果展示
文件名 = XXX + 时间


四 、需要注意的问题
1. 开发中编写excel导出web层时,不需要将数据返回给页面
2. set(); 清除jsp空白行 , 不能写在关闭流之后
五 、本文使用要点
1. 可以动态传入开发中所需的数据 , 如不需要将参数删掉即可
请自行拼接参数
2. 行与列请根据自己的数据多少自行拼接多个
六 、致歉
由于本文测试中掺杂一些开发中的数据,所以并未完全展示 ,请大家见谅 !!!

本文发布于:2024-01-28 03:52:57,感谢您对本站的认可!

本文链接:https://www.4u4v.net/it/17063852084581.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:POI
留言与评论(共有 0 条评论)
   
验证码:

Copyright ©2019-2022 Comsenz Inc.Powered by ©

网站地图1 网站地图2 网站地图3 网站地图4 网站地图5 网站地图6 网站地图7 网站地图8 网站地图9 网站地图10 网站地图11 网站地图12 网站地图13 网站地图14 网站地图15 网站地图16 网站地图17 网站地图18 网站地图19 网站地图20 网站地图21 网站地图22/a> 网站地图23