java代码读取excel文件,同时兼容2003和2007
来源:互联网 发布:oracle数据库主键类型 编辑:程序博客网 时间:2024/06/05 12:01
package org.framework.core.util;import java.io.BufferedInputStream;import java.io.FileInputStream;import java.io.InputStream;import java.io.PushbackInputStream;import java.text.SimpleDateFormat;import java.util.ArrayList;import java.util.HashMap;import java.util.List;import java.util.Map;import org.apache.poi.POIXMLDocument;import org.apache.poi.hssf.usermodel.HSSFCell;import org.apache.poi.hssf.usermodel.HSSFDateUtil;import org.apache.poi.hssf.usermodel.HSSFWorkbook;import org.apache.poi.openxml4j.opc.OPCPackage;import org.apache.poi.poifs.filesystem.POIFSFileSystem;import org.apache.poi.ss.usermodel.Cell;import org.apache.poi.ss.usermodel.Row;import org.apache.poi.ss.usermodel.Sheet;import org.apache.poi.ss.usermodel.Workbook;import org.apache.poi.xssf.usermodel.XSSFWorkbook;public class ExcelRead {public static Workbook create(InputStream inp) throws Exception {if (!inp.markSupported()) { inp = new PushbackInputStream(inp, 8); } if (POIFSFileSystem.hasPOIFSHeader(inp)) { return new HSSFWorkbook(inp); } if (POIXMLDocument.hasOOXMLHeader(inp)) { return new XSSFWorkbook(OPCPackage.open(inp)); } throw new IllegalArgumentException("你的excel版本目前poi解析不了");}/** * 通过流读取Excel文件 * @param stream * @return * @throws Exception */public static Map<String, List<List<Map<Integer,String>>>> getExcelDataByStream(String streamPath) throws Exception {try {Map<String, List<List<Map<Integer,String>>>> data = new HashMap<String, List<List<Map<Integer,String>>>>();Workbook book = create(new BufferedInputStream(new FileInputStream(streamPath)));if (null == book.getSheetAt(0)) {return null;}List<Map<Integer,String>> rowData = null;// 每一行的数据List<List<Map<Integer,String>>> sheetData = null;// 每个SHEET的数据String sheetName = null;// 遍历Excel得到SHEETfor (int i = 0; i < book.getNumberOfSheets(); i++) {Sheet sheet = book.getSheetAt(i);// 获取SHEET的名字sheetName = sheet.getSheetName();sheetData = new ArrayList<List<Map<Integer,String>>>();// 遍历SHEET得到每一行for (int rowNum = 0; rowNum < sheet.getLastRowNum(); rowNum++) {Row row = sheet.getRow(rowNum);if (null == row) {continue;}// 再遍历该行的所有列rowData = new ArrayList<Map<Integer,String>>();for (int cellNum = 0; cellNum < row.getLastCellNum(); cellNum++) {Cell cell = row.getCell(cellNum);if (null == cell) {continue;}String cellVal = getCellVal(cell);Map<Integer,String> map = new HashMap<Integer,String>();map.put(cellNum, cellVal);rowData.add(map);}// 如上遍历后rowData中填充了每一行的数据,将其加入到sheet中sheetData.add(rowData);}// 有了SHEET名字和SHEET中的数据了,以SHEET名字为键值,加入到MAP中data.put(sheetName, sheetData);}return data;} catch (Exception e) {e.printStackTrace();}return null;}private static String getCellVal(Cell cell) {if (null == cell) {return "";}switch (cell.getCellType()) {// 数字case HSSFCell.CELL_TYPE_NUMERIC:// 日期格式的处理if (HSSFDateUtil.isCellDateFormatted(cell)) {SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");return sdf.format(HSSFDateUtil.getJavaDate(cell.getNumericCellValue())).toString();}return String.valueOf(cell.getNumericCellValue());// 字符串case HSSFCell.CELL_TYPE_STRING:return cell.getStringCellValue();// 公式case HSSFCell.CELL_TYPE_FORMULA:return cell.getCellFormula();// 空白case HSSFCell.CELL_TYPE_BLANK:return "";case HSSFCell.CELL_TYPE_BOOLEAN:return cell.getBooleanCellValue() + "";// 错误类型case HSSFCell.CELL_TYPE_ERROR:return cell.getErrorCellValue() + "";default:break;}return "";}}
阅读全文
0 0
- java代码读取excel文件,同时兼容2003和2007
- java代码读取excel文件,同时兼容2003和2007
- java 读取 Excel 读取兼容2003,2007
- java使用POI读取excel文件,兼容xls和xlsx
- java 读取 Excel兼容2003,2007
- JAVA读取Excel兼容2003、2007
- java--poi 读取Excel 兼容2003/2007
- java读取excel(2003-2007)兼容
- JAVA读取Excel兼容2003、2007
- Java 读取excel文件 兼容97-2013
- 利用POI读取Excel数据,实现同时读取多个Excel文件,兼容所有浏览器
- 通过POI统一读取Excel文件(兼容97-2003和2007+两种格式)
- 通过POI统一读取Excel文件(兼容97-2003和2007+两种格式)
- struts:poi读取excel文件(兼容2003、2007)
- java 导入Excel 文件,兼容Excel 2003(后缀名:xls)及 2007(后缀名:xlsx)的文件,同时还支持csv格式的文件
- Java上传Excel同时兼容2003和2007 解决read error和org.apache.poi.poifs.filesystem.OfficeXmlFileException异常
- Java之excel导入数据同时兼容.xls和.xlsx
- poi读取EXCEL工具,兼容2003以下和2007
- 编码和字符集
- 调度事务管理功能 供电系统运行情况的数据归档和统计报表功能
- 宝塔面板上传项目步骤
- mybatis传递List,Array,Map
- ExpandableListView异常Couldn't read row 0, col -1 from CursorWindow
- java代码读取excel文件,同时兼容2003和2007
- 业务日志查询,环境问题初步定为方法
- inception_v3迁移学习(GoogleNet)
- 练习项目 一款新闻app的开发 (三):通过Rxjava + Retrofit2框架获取网络数据
- jenkins定时编译节省测试用例执行时间
- Druid组件角色
- 机器学习实战代码详解(八)预测数值型数据:回归
- Linux平台卸载MySQL总结
- android图形系统组件(二)