package com.citics.crm.customerwidget.utils; import java.io.File; import java.io.FileInputStream; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import java.util.List; import org.apache.poi.xssf.usermodel.XSSFCell; import org.apache.poi.xssf.usermodel.XSSFRow; import org.apache.poi.xssf.usermodel.XSSFSheet; import org.apache.poi.xssf.usermodel.XSSFWorkbook; import org.apache.poi2.hssf.usermodel.HSSFCell; import org.apache.poi2.hssf.usermodel.HSSFRow; import org.apache.poi2.hssf.usermodel.HSSFSheet; import org.apache.poi2.hssf.usermodel.HSSFWorkbook; public class ExcelUtil { private ExcelUtil(){}; private static List<String> columns;//要解析excel中的列名 private static int sheetNum = 0;//要解析的sheet下标 /** * poi读取excle * @return */ public static String readExcel(File file){ StringBuilder retJson = new StringBuilder(); InputStream inStream = null; try { inStream = new FileInputStream(file); HSSFWorkbook workbook = new HSSFWorkbook(inStream); HSSFSheet sheet = workbook.getSheetAt(sheetNum);//获得表 int lastRowNum = sheet.getLastRowNum();//最后一行 retJson.append("["); for(int i = 0 ;i < lastRowNum;i++){ HSSFRow row = sheet.getRow(i);//获得行 String rowJson = readExcelRow(row); retJson.append(rowJson); if(i<lastRowNum-1) retJson.append(","); } retJson.append("]"); } catch (Exception e) { try { inStream = new FileInputStream(file); XSSFWorkbook workbook = new XSSFWorkbook(inStream); XSSFSheet sheet = workbook.getSheetAt(sheetNum); int lastRowNum = sheet.getLastRowNum();//最后一行 retJson.append("["); for(int i = 0 ;i < lastRowNum;i++){ XSSFRow row = sheet.getRow(i);//获得行 String rowJson = readExcelRow(row); retJson.append(rowJson); if(i<lastRowNum-1) retJson.append(","); } retJson.append("]"); } catch (IOException e1) { e1.printStackTrace(); } }finally{ close(null,inStream); } return retJson.toString(); } /** * 读取行值 * @return */ private static String readExcelRow(HSSFRow row){ StringBuilder rowJson = new StringBuilder(); int lastCellNum = ExcelUtil.columns.size();//最后一个单元格 rowJson.append("{"); for(int i = 0 ;i<lastCellNum;i++){ HSSFCell cell = row.getCell(i); String cellVal = readCellValue(cell); rowJson.append(toJsonItem(columns.get(i), cellVal)); if(i<lastCellNum-1) rowJson.append(","); } rowJson.append("}"); return rowJson.toString(); } /** * 读取行值 * @return */ private static String readExcelRow(XSSFRow row){ StringBuilder rowJson = new StringBuilder(); int lastCellNum = ExcelUtil.columns.size();//最后一个单元格 rowJson.append("{"); for(int i = 0 ;i<lastCellNum;i++){ XSSFCell cell = row.getCell(i); String cellVal = readCellValue(cell); rowJson.append(toJsonItem(columns.get(i), cellVal)); if(i<lastCellNum-1) rowJson.append(","); } rowJson.append("}"); return rowJson.toString(); } /** * 读取单元格的值 * @param hssfCell * @return */ @SuppressWarnings("static-access") private static String readCellValue(HSSFCell hssfCell) { if (hssfCell.getCellType() == hssfCell.CELL_TYPE_BOOLEAN) { return String.valueOf(hssfCell.getBooleanCellValue()); } else if (hssfCell.getCellType() == hssfCell.CELL_TYPE_NUMERIC) { return String.valueOf(hssfCell.getNumericCellValue()); } else { return String.valueOf(hssfCell.getRichStringCellValue()); } } /** * 读取单元格的值 * @param hssfCell * @return */ @SuppressWarnings("static-access") private static String readCellValue(XSSFCell hssfCell) { if (hssfCell.getCellType() == hssfCell.CELL_TYPE_BOOLEAN) { return String.valueOf(hssfCell.getBooleanCellValue()); } else if (hssfCell.getCellType() == hssfCell.CELL_TYPE_NUMERIC) { return String.valueOf(hssfCell.getNumericCellValue()); } else { return String.valueOf(hssfCell.getRichStringCellValue()); } } /** * 转换为json对 * @return */ private static String toJsonItem(String name,String val){ return "\""+name+"\":\""+val+"\""; } /** * 关闭io流 * @param fos * @param fis */ private static void close(OutputStream out, InputStream in) { if (in != null) { try { in.close(); } catch (IOException e) { System.out.println("InputStream关闭失败"); e.printStackTrace(); } } if (out != null) { try { out.close(); } catch (IOException e) { System.out.println("OutputStream关闭失败"); e.printStackTrace(); } } } public static List<String> getColumns() { return ExcelUtil.columns; } public static void setColumns(List<String> columns) { ExcelUtil.columns = columns; } public static int getSheetNum() { return sheetNum; } public static void setSheetNum(int sheetNum) { ExcelUtil.sheetNum = sheetNum; } }
调用方式
List<String> columns = new ArrayList<String>();
columns.add("CUST_NAME1");//战略客户名
columns.add("CUST_NAME2");//客户名
columns.add("INCOME_TYPE");//收入类型
columns.add("DEPT_NAME");//部门名称
columns.add("YEAR");//年份
columns.add("MONTH");//月份
columns.add("AMT");//金额
ExcelUtil.setColumns(columns);
String retJson = ExcelUtil.readExcel(upload);
相关推荐
只有读取,没有写入
通用的java+poi读取excel数据 源码,包含有poi.jar包。如需读取excel2003以上版本,只需修改HSSF为XSSF。
poi通过反射,泛型,注解来实现通用的poi导出导入公共类。
利用开源组件POI3.0.2,用java语言实现了动态导出Excel...4.点击Read excel 2003 or 2007,可以读取2003或2007版Excel 5.点击Export excel 2003,可以导出Excel 2003版 6.点击Export excel 2007,可以导出Excel 2007版
SpringBoot整合poi实现Excel文件的导入和导出,其中单独分装出一个ExcelFormatUtil工具类来实现对单元格数据格式进行判断。
在项目中,经常免不了要导入、导出Excel,导出Excel稍微简单点,制作一张模板,然后将查询之后的数据写入到模板中即可,导出程序可以做到一次写好,基本上就可以通用。 ExcelData excelData =...POI3.0 : 读取Excel文件
poi导入/导出Excel表格,合并单元格的读取和设置
利用开源组件POI3.0.2,用java语言实现了动态导出...4.点击Read excel 2003 or 2007,可以读取2003或2007版Excel 5.点击Export excel 2003,可以导出Excel 2003版 6.点击Export excel 2007,可以导出Excel 2007版
随后其他项目中都会用到,为了减少重复工作,不必因为excel的样式、数据等变化而重新编码,重复劳动,因此必须抽取通用的东西出来,封装共同点,暴露个性点,使用时只需要关注相关业务,而不必关注excel的读取和存储...
在此存储库中,我们有一个示例,确定如何使用apache poi读取Excel文件并将所有项目保存在mongoDB中 在此存储库中,我们有一些模块用于主要项目类,kafka服务,poi服务,最后保存在MongoDb中 excel文件上传 运行和...
excel poi 通用解析代码实现,页面段上传的xls文件转为文件流放到构造器里面就可以实现读取xls了。
解析通过MutilpartFile导入的Excel并解析里面数据,先判断文件的类型(excel处理有两种此处为两种通用)是.xls/.xlsx,采用Apache的POI的API来操作Excel,读取内容后保存到List中,再将List转Json(使用Linked,增删快...
介绍 GridExcel ...支持使用滚动窗口+监听函数的方式去处理从Excel中读取的数据 Apache POI 在业务开发中我们经常会遇到Excel的导入导出,而 Apache POI 是Java开发者常用的API。 【】 EventModel 什
该资源可以使用poi完成取出xls和xlsx格式文件内容的读取功能,包括需要的jar包,测试的excel文件和较为通用的示例代码。
能实现一对多关联的通用EXCEL导入功能 具体访问我的BLOG http://blog.csdn.net/dreamdiary
前几天上传过这个资源,因为是在jdk1.6上开发的, 测试了一下在jdk1.5上不能用, 今天重新用jdk1.5编译了一下, 这个是可以支持...excel2003, excel2007 导入,导出, 通用工具. 依赖jar包也在附件中. 欢迎大家下载使用.
Excel导入数据库工具 一个自己开发的用于Exel导入数据的小工具,方便简洁。
ExcelReads(简单Excel通用读写器) ExcelReads是什么? 这是一个通用的简单的Excel读取器 支持自定义JavaBean实体读取和HashMap自动读取 支持自定义扩展 支持自定义Sheet范围,数据开始行数 支持数据库查询直接导出...
Java多线程读取大文本文件并批量插入MongoDB的代码,文本文件,csv文件,可以结合POI改造使其支持excel。 适合做大量文本数据或日志文件入库的场景,大文本被拆分成多个线程处理,速度快。 批量插入MongoDB,存在则...