java工具封装之poi的导入导出工具
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了java工具封装之poi的导入导出工具,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含6327字,纯文字阅读大概需要10分钟。
内容图文
![java工具封装之poi的导入导出工具](/upload/InfoBanner/zyjiaocheng/628/7818b6985ec747509a469f7ab392e2a8.jpg)
封装的工具不用自己去判断excel中的每一行每一单元,直接根据名称属性赋值给对象,可直接file文件转成list对象数据
ExcelUtil.java和ExcelVOAttribute.java
package com.zhou.utils.excelUtil; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import java.lang.reflect.Field; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import org.apache.poi.hssf.usermodel.DVConstraint; import org.apache.poi.hssf.usermodel.HSSFCell; import org.apache.poi.hssf.usermodel.HSSFCellStyle; import org.apache.poi.hssf.usermodel.HSSFDataValidation; import org.apache.poi.hssf.usermodel.HSSFRow; import org.apache.poi.hssf.usermodel.HSSFSheet; import org.apache.poi.hssf.usermodel.HSSFWorkbook; import org.apache.poi.hssf.util.HSSFColor; import org.apache.poi.ss.util.CellRangeAddressList; public class ExcelUtil<T> { Class<T> clazz; public ExcelUtil(Class<T> clazz) { this.clazz = clazz; } public List<T> importExcel(String sheetName, InputStream input) { int maxCol = 0; List<T> list = new ArrayList<T>(); try { HSSFWorkbook workbook = new HSSFWorkbook(input); HSSFSheet sheet = workbook.getSheet(sheetName); if (!sheetName.trim().equals("")) { sheet = workbook.getSheet(sheetName);// ??????sheet??,??????sheet?е?????. } if (sheet == null) { sheet = workbook.getSheetAt(0); // ????????sheet?????????????????1??sheet. } int rows = sheet.getPhysicalNumberOfRows(); if (rows > 0) {// ???????????? // Field[] allFields = clazz.getDeclaredFields();// ?õ????????field. List<Field> allFields = getMappedFiled(clazz, null); Map<Integer, Field> fieldsMap = new HashMap<Integer, Field>();// ???????map???????е?????field. for (Field field : allFields) { // ????????field????map??. if (field.isAnnotationPresent(ExcelVOAttribute.class)) { ExcelVOAttribute attr = field .getAnnotation(ExcelVOAttribute.class); int col = getExcelCol(attr.column());// ????к? maxCol = Math.max(col, maxCol); // System.out.println(col + "====" + field.getName()); field.setAccessible(true);// ?????????????????????. fieldsMap.put(col, field); } } for (int i = 1; i < rows; i++) {// ???2?п???????,???????????. HSSFRow row = sheet.getRow(i); // int cellNum = row.getPhysicalNumberOfCells(); // int cellNum = row.getLastCellNum(); int cellNum = maxCol; T entity = null; for (int j = 0; j < cellNum; j++) { HSSFCell cell = row.getCell(j); if (cell == null) { continue; } int cellType = cell.getCellType(); String c = ""; if (cellType == HSSFCell.CELL_TYPE_NUMERIC) { c = String.valueOf(cell.getNumericCellValue()); } else if (cellType == HSSFCell.CELL_TYPE_BOOLEAN) { c = String.valueOf(cell.getBooleanCellValue()); } else { c = cell.getStringCellValue(); } if (c == null || c.equals("")) { continue; } entity = (entity == null ? clazz.newInstance() : entity);// ???????????????½?. // System.out.println(cells[j].getContents()); Field field = fieldsMap.get(j);// ??map?еõ?????е?field. if (field==null) { continue; } // ???????,??????????????????. Class<?> fieldType = field.getType(); if (String.class == fieldType) { field.set(entity, String.valueOf(c)); } else if ((Integer.TYPE == fieldType) || (Integer.class == fieldType)) { field.set(entity, Integer.parseInt(c)); } else if ((Long.TYPE == fieldType) || (Long.class == fieldType)) { field.set(entity, Long.valueOf(c)); } else if ((Float.TYPE == fieldType) || (Float.class == fieldType)) { field.set(entity, Float.valueOf(c)); } else if ((Short.TYPE == fieldType) || (Short.class == fieldType)) { field.set(entity, Short.valueOf(c)); } else if ((Double.TYPE == fieldType) || (Double.class == fieldType)) { field.set(entity, Double.valueOf(c)); } else if (Character.TYPE == fieldType) { if ((c != null) && (c.length() > 0)) { field.set(entity, Character .valueOf(c.charAt(0))); } } } if (entity != null) { list.add(entity); } } } } catch (IOException e) { e.printStackTrace(); } catch (InstantiationException e) { e.printStackTrace(); } catch (IllegalAccessException e) { e.printStackTrace(); } catch (IllegalArgumentException e) { e.printStackTrace(); } return list; } /** * ??list?????????????????????excel?? * * @param sheetName * ??????????? * @param output * java????? */ public boolean exportExcel(List<T> lists[], String sheetNames[], OutputStream output) { if (lists.length != sheetNames.length) { System.out.println("???鳤??????"); return false; } HSSFWorkbook workbook = new HSSFWorkbook();// ?????????????? for (int ii = 0; ii < lists.length; ii++) { List<T> list = lists[ii]; String sheetName = sheetNames[ii]; List<Field> fields = getMappedFiled(clazz, null); HSSFSheet sheet = workbook.createSheet();// ????????????? workbook.setSheetName(ii, sheetName); HSSFRow row; HSSFCell cell;// ????????? HSSFCellStyle style = workbook.createCellStyle(); style.setFillForegroundColor(HSSFColor.SKY_BLUE.index); style.setFillBackgroundColor(HSSFColor.GREY_40_PERCENT.index); row = sheet.createRow(0);// ??????? // д???????ε???????? for (int i = 0; i < fields.size(); i++) { Field field = fields.get(i); ExcelVOAttribute attr = field .getAnnotation(ExcelVOAttribute.class); int col = getExcelCol(attr.column());// ????к? cell = row.createCell(col);// ?????? cell.setCellType(HSSFCell.CELL_TYPE_STRING);// ????????д???????String???? cell.setCellValue(attr.name());// д?????? // ???????????????????????????. if (!attr.prompt().trim().equals("")) { setHSSFPrompt(sheet, "", attr.prompt(), 1, 100, col, col);// ???????????2-101?????. } // ?????????combo???????????????????? if (attr.combo().length > 0) { setHSSFValidation(sheet, attr.combo(), 1, 100, col, col);// ???????????2-101??????????????. } cell.setCellStyle(style); } int startNo = 0; int endNo = list.size(); // д???????¼,ÿ????¼???excel???е???? for (int i = startNo; i < endNo; i++) { row = sheet.createRow(i + 1 - startNo); T vo = (T) list.get(i); // ?õ?????????. for (int j = 0; j < fields.size(); j++) { Field field = fields.get(j);// ???field. field.setAccessible(true);// ???????????????????? ExcelVOAttribute attr = field .getAnnotation(ExcelVOAttribute.class); try { // ????ExcelVOAttribute???????????????标签:,,,,,,,, 来源: https://www.cnblogs.com/spll/p/13269170.html
内容总结
以上是互联网集市为您收集整理的java工具封装之poi的导入导出工具全部内容,希望文章能够帮你解决java工具封装之poi的导入导出工具所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。