excel 解析 xls 和 xlsx
来源:互联网 发布:大连知润信息科技骗局 编辑:程序博客网 时间:2024/06/06 03:37
1.注意:在使用Apache POI操作Excel2007 的时候,POI操作Excel2007的org.apache.xmlbeans.xmlexception 原因:默认官方下载的POI包中没有包含这个 xmlbeans.jar。
2.NoSuchMethodError: javax.xml.stream.XMLEventFactory.newFactory() ,XMLEventFactory.newFactory()这个API是在JDK 1.6.0.18加入的,你得确保你使用的JDK高于这个版本 。
本实例: poi3.11.jar xssfwORK
/** * Excel文件解析 xls xlsx * @author * @version * @param */ public class ExcelReader { private POIFSFileSystem fs; private HSSFWorkbook wb; private HSSFSheet sheet; private HSSFRow row; private HSSFCell cell; private XSSFWorkbook xss; private XSSFSheet xssSheet; private XSSFRow xssRow; private XSSFCell xssCell; public void readXls(InputStream is) throws IOException { fs = new POIFSFileSystem(is); wb = new HSSFWorkbook(fs); List<Map<String,String>> list = new ArrayList<Map<String,String>>(); //循环工作表 for (int numSheet=0; numSheet<wb.getNumberOfSheets();numSheet++) { sheet = wb.getSheetAt(numSheet); if(sheet==null) { continue; } //循环行 for(int rowNum=0; rowNum<sheet.getLastRowNum();rowNum++) { row = sheet.getRow(rowNum); if(row==null) { continue; } //循环列 单元格 for(int cellNum =0; cellNum< row.getLastCellNum();cellNum++) { cell = row.getCell(cellNum); if(cell==null) { continue; } System.out.println(" "+getCellValue(cell)); } } } } public List<Map<String,String>> getXls(InputStream is) throws IOException { fs = new POIFSFileSystem(is); wb = new HSSFWorkbook(fs); List<Map<String,String>> list = new ArrayList<Map<String,String>>(); List<String> titleList = new ArrayList<String>(); Map<String,String> map = null; //循环工作表 sheet = wb.getSheetAt(0); //循环行 for(int rowNum=0; rowNum<sheet.getLastRowNum();rowNum++) { row = sheet.getRow(rowNum); if(row==null) { continue; } //循环列 单元格 for(int cellNum =0; cellNum< row.getLastCellNum();cellNum++) { cell = row.getCell(cellNum); if(cell==null) { continue; } if(rowNum==0) { titleList.add(getCellValue(cell)); }else{ map = new HashMap<String,String>(); map.put(titleList.get(cellNum) , getCellValue(cell)); } System.out.println(" "+getCellValue(cell)); } list.add(map); } return list; } /* * 获取cell的内容, 并将其转成String * param HSSFCell * DecimalFormat df = new DecimalFormat("0");// 格式化 number String 字符 * SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");// 格式化日期字符串 * DecimalFormat nf = new DecimalFormat("0.00");// 格式化数字 */ public String getCellValue(HSSFCell cell) { String strCell = ""; switch (cell.getCellType()) { case HSSFCell.CELL_TYPE_STRING: strCell = cell.getStringCellValue(); break; case HSSFCell.CELL_TYPE_NUMERIC: DecimalFormat df = new DecimalFormat("0"); //数字过长, excel 会把数字变成科学计数法的形式,故需格式化 strCell = String.valueOf(df.format(cell.getNumericCellValue())); break; case HSSFCell.CELL_TYPE_BOOLEAN: strCell = String.valueOf(cell.getBooleanCellValue()); break; case HSSFCell.CELL_TYPE_BLANK: strCell = ""; break; default: strCell = ""; break; } return strCell; } //------------------------------------------------------------------------------------- // NoSuchMethodError: javax.xml.stream.XMLEventFactory.newFactory() //XMLEventFactory.newFactory()这个API是在JDK 1.6.0.18加入的,你得确保你使用的JDK高于这个版本 public String getXssCellValue(XSSFCell cell) { String strCell = ""; switch (cell.getCellType()) { case XSSFCell.CELL_TYPE_STRING: strCell = cell.getStringCellValue(); break; case XSSFCell.CELL_TYPE_NUMERIC: DecimalFormat df = new DecimalFormat("0"); //数字过长, excel 会把数字变成科学计数法的形式,故需格式化 strCell = String.valueOf(df.format(cell.getNumericCellValue())); break; case XSSFCell.CELL_TYPE_BOOLEAN: strCell = String.valueOf(cell.getBooleanCellValue()); break; case XSSFCell.CELL_TYPE_BLANK: strCell = ""; break; default: strCell = ""; break; } return strCell; } public void readXlsx(InputStream is) throws IOException { xss = new XSSFWorkbook(is); List<Map<String,String>> list = new ArrayList<Map<String,String>>(); //循环工作表 for (int numSheet=0; numSheet<xss.getNumberOfSheets();numSheet++) { xssSheet = xss.getSheetAt(numSheet); if(xssSheet==null) { continue; } //循环行 for(int rowNum=0; rowNum<xssSheet.getLastRowNum();rowNum++) { xssRow = xssSheet.getRow(rowNum); if(xssRow==null) { continue; } //循环列 单元格 for(int cellNum =0; cellNum< xssRow.getLastCellNum();cellNum++) { xssCell = xssRow.getCell(cellNum); if(xssCell==null) { continue; } System.out.println(" "+getXssCellValue(xssCell)); } } } } public List<Map<String,String>> getXlsx(InputStream is) throws IOException { XSSFWorkbook xss = new XSSFWorkbook(is); List<Map<String,String>> list = new ArrayList<Map<String,String>>(); List<String> titleList = new ArrayList<String>(); Map<String,String> map = null; //循环工作表 xssSheet = xss.getSheetAt(0); //循环行 for(int rowNum=0; rowNum<xssSheet.getLastRowNum();rowNum++) { xssRow = xssSheet.getRow(rowNum); if(xssRow==null) { continue; } //循环列 单元格 for(int cellNum =0; cellNum< xssRow.getLastCellNum();cellNum++) { xssCell = xssRow.getCell(cellNum); if(xssCell==null) { continue; } if(rowNum==0) { titleList.add(getXssCellValue(xssCell)); }else{ map = new HashMap<String,String>(); map.put(titleList.get(cellNum) , getXssCellValue(xssCell)); } System.out.println(" "+getXssCellValue(xssCell)); } list.add(map); } return list; }
注意:xls文件, xlsx文件解析必须要分别对应 HSSFWorkbook, XSSFWorkbook 对象,
xls文件直接改扩展名 去解析 各种异常。。。。
0 0
- excel 解析 xls 和 xlsx
- POI解析Excel(.xls)和Excel2007(.xlsx)
- 使用poi来解析Excel的xls和xlsx。
- 使用poi来解析Excel的xls和xlsx
- 使用poi来解析Excel的xls和xlsx。
- 使用poi来解析Excel的xls和xlsx
- poi解析xls和xlsx
- poi 解析 Excel(xls xlsx)
- EXCEL文档解析(xls,xlsx)工具类
- poi 解析excel 支持 xls xlsx后缀
- POI导入Excel含.xls和.xlsx
- POI 操作EXCEL(一)解析EXCEL 自动识别xls和xlsx
- [解析excel]解析03版xls和07版以上的xlsx
- java解析ecel文件,xls和xlsx
- 导入excel,xls,xlsx
- Java解析Excel表格(支持xls和xlsx格式),并转换为Json数据
- Java使用POI解析后缀为.xls和.xlsx的Excel的完美处理
- 用poi解析excel,支持office2003、2007(xls,xlsx)
- 侧边固定悬浮导航
- 【Spring】官网教程阅读笔记(五):Redis消息
- **没有规则可以创建“XXX”需要的目标“XXX”问题的解决方案
- cocos2dx3.2开发 RPG《Flighting》
- 第一天:求二维数组中每个一维数组的元素之和
- excel 解析 xls 和 xlsx
- MRP测试总结1
- android KITKAT 状态栏颜色
- Matlab下各个滤波器传递函数透视图的绘制
- POJ 1088滑雪 记忆化搜索(搜索 + dp)
- Python基础03 序列
- OpenCV2 访问各个像素点的方法(图像遍历)
- linux硬链接与软链接
- AngularJS实现跨域请求