博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【7.0】操作excel
阅读量:4318 次
发布时间:2019-06-06

本文共 6805 字,大约阅读时间需要 22 分钟。

 

 

 

1.解析结果全部为String格式:

package com.guangzhouhuayu.util;import org.apache.poi.hssf.usermodel.*;import org.apache.poi.ss.usermodel.Cell;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 java.io.FileInputStream;import java.io.InputStream;import java.text.SimpleDateFormat;import java.util.ArrayList;import java.util.Date;import java.util.List;/** * 作者:人生若只如初见 * 时间:2017/7/14 * 描述: */public class ExcelUtils {    /**     * 解析 后缀.xls     * @param is     * @return     * @throws Exception     */    public static List
> readXls(InputStream is) throws Exception{ //HSSFWorkbook表示整个excel对象 HSSFWorkbook hssfWorkbook = new HSSFWorkbook(is); List
> result = new ArrayList
>(); //获取excel中的每一页 hssfSheet对象 for(int numSheet = 0; numSheet < hssfWorkbook.getNumberOfSheets(); numSheet++){ HSSFSheet hssfSheet = hssfWorkbook.getSheetAt(numSheet); if(hssfSheet == null) { continue; } //如果不为空 处理当前sheet 获取每一行 hssfRow对象 List
rowList; //获取标题行列数 int lastCellNum = 0; //1.获取标题行 HSSFRow hssfRow = hssfSheet.getRow(0); if(hssfRow != null){ rowList = new ArrayList
(); //获取标题行列数 lastCellNum = hssfRow.getLastCellNum(); //获取标题行的每一列 cell对象 for(int i = 0; i < lastCellNum; i++){ HSSFCell cell = hssfRow.getCell(i); if(cell == null) { rowList.add(null); continue; } else{ cell.setCellType(Cell.CELL_TYPE_STRING); String cellVal = cell.getStringCellValue(); rowList.add(cellVal); } } result.add(rowList); } //2.获取其他行 for(int rowNum =1; rowNum <= hssfSheet.getLastRowNum(); rowNum++ ){ hssfRow = hssfSheet.getRow(rowNum); if(hssfRow == null){ continue; } rowList = new ArrayList
(); //获取每一列 cell对象 for(int i = 0; i < lastCellNum; i++){ HSSFCell cell = hssfRow.getCell(i); if(cell == null) { rowList.add(null); continue; } //如果cell != null, 设置取值格式为String类型 cell.setCellType(Cell.CELL_TYPE_STRING); String cellVal = cell.getStringCellValue(); rowList.add(cellVal); } result.add(rowList); } } return result; } /** * 解析 后缀.xlsx * @param is * @return * @throws Exception */ public static List
> readXlsx(InputStream is) throws Exception{ //XSSFWorkbook表示整个excel对象 XSSFWorkbook XSSFWorkbook = new XSSFWorkbook(is); List
> result = new ArrayList
>(); //获取excel中的每一页 XSSFSheet对象 for(int numSheet = 0; numSheet < XSSFWorkbook.getNumberOfSheets(); numSheet++){ XSSFSheet XSSFSheet = XSSFWorkbook.getSheetAt(numSheet); if(XSSFSheet == null) { continue; } //如果不为空 处理当前sheet 获取每一行 XSSFRow对象 List
rowList; //获取标题行列数 int lastCellNum = 0; //1.获取标题行 XSSFRow XSSFRow = XSSFSheet.getRow(0); if(XSSFRow != null){ rowList = new ArrayList
(); //获取标题行列数 lastCellNum = XSSFRow.getLastCellNum(); //获取标题行的每一列 cell对象 for(int i = 0; i < lastCellNum; i++){ XSSFCell cell = XSSFRow.getCell(i); if(cell == null) { rowList.add(null); continue; } else{ //如果cell != null, 设置取值格式为String类型 cell.setCellType(Cell.CELL_TYPE_STRING); String cellVal = cell.getStringCellValue(); rowList.add(cellVal); } } result.add(rowList); } //2.获取其他行 for(int rowNum =1; rowNum <= XSSFSheet.getLastRowNum(); rowNum++ ){ XSSFRow = XSSFSheet.getRow(rowNum); if(XSSFRow == null){ continue; } rowList = new ArrayList
(); //获取每一列 cell对象 for(int i = 0; i < lastCellNum; i++){ XSSFCell cell = XSSFRow.getCell(i); if(cell == null) { rowList.add(null); continue; } //如果cell != null, 设置取值格式为String类型 cell.setCellType(Cell.CELL_TYPE_STRING); String cellVal = cell.getStringCellValue(); rowList.add(cellVal); } result.add(rowList); } } return result; }}

  

 

 

 

 

 

 

 

2.解析格式按类型转换:

package com.chx.test;import java.io.FileInputStream;import java.io.InputStream;import java.text.SimpleDateFormat;import java.util.ArrayList;import java.util.Date;import java.util.List;import org.apache.poi.hssf.eventusermodel.HSSFEventFactory;import org.apache.poi.hssf.usermodel.HSSFCell;import org.apache.poi.hssf.usermodel.HSSFDateUtil;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.ss.usermodel.Cell;public class ResolveExcel {	private List
> readXls(InputStream is) throws Exception{ //HSSFWorkbook表示整个excel对象 HSSFWorkbook hssfWorkbook = new HSSFWorkbook(is); List
> result = new ArrayList
>(); //获取excel中的每一页 hssfSheet对象 for(int numSheet = 0; numSheet < hssfWorkbook.getNumberOfSheets(); numSheet++){ HSSFSheet hssfSheet = hssfWorkbook.getSheetAt(numSheet); if(hssfSheet == null) { continue; } //如果不为空 处理当前sheet 获取每一行 hssfRow对象 List
rowList; //获取标题行列数 int lastCellNum = 0; //1.获取标题行 HSSFRow hssfRow = hssfSheet.getRow(0); if(hssfRow != null){ rowList = new ArrayList
(); //获取标题行列数 lastCellNum = hssfRow.getLastCellNum(); //获取标题行的每一列 cell对象 for(int i = 0; i < lastCellNum; i++){ HSSFCell cell = hssfRow.getCell(i); if(cell == null) { rowList.add(null); continue; } else{ //如果cell != null, 设置取值格式为String类型 //cell.setCellType(Cell.CELL_TYPE_STRING); //String cellVal = cell.getStringCellValue(); rowList.add(getCellStringValue(cell)); } } result.add(rowList); } //2.获取其他行 for(int rowNum =1; rowNum <= hssfSheet.getLastRowNum(); rowNum++ ){ hssfRow = hssfSheet.getRow(rowNum); if(hssfRow == null){ continue; } rowList = new ArrayList
(); //获取每一列 cell对象 for(int i = 0; i < lastCellNum; i++){ HSSFCell cell = hssfRow.getCell(i); if(cell == null) { rowList.add(null); continue; } //如果cell != null, 设置取值格式为String类型 //cell.setCellType(Cell.CELL_TYPE_STRING); //String cellVal = cell.getStringCellValue(); rowList.add(getCellStringValue(cell)); } result.add(rowList); } } return result; } public String getCellStringValue(HSSFCell cell) { String cellValue = ""; switch (cell.getCellType()) { case HSSFCell.CELL_TYPE_STRING://字符串类型 cellValue = cell.getStringCellValue(); if(cellValue.trim().equals("")||cellValue.trim().length()<=0) cellValue=" "; break; case HSSFCell.CELL_TYPE_NUMERIC: //数值类型 cellValue = String.valueOf(cell.getNumericCellValue()); break; case HSSFCell.CELL_TYPE_FORMULA: //公式 cell.setCellType(HSSFCell.CELL_TYPE_NUMERIC); cellValue = String.valueOf(cell.getNumericCellValue()); break; case HSSFCell.CELL_TYPE_BLANK: cellValue=" "; break; case HSSFCell.CELL_TYPE_BOOLEAN: break; case HSSFCell.CELL_TYPE_ERROR: break; default: break; } return cellValue; } public static void main(String[] args) throws Exception { String path = "e:\\employee.xls"; InputStream is = new FileInputStream(path); ResolveExcel resolveExcel = new ResolveExcel(); List
> result = resolveExcel.readXls(is); for(List
list : result){ for(String str : list){ System.out.print(str + ", "); } System.out.println(); } }}

  

 

转载于:https://www.cnblogs.com/chxbar/p/7192732.html

你可能感兴趣的文章
POJ 2265 Bee Maja (找规律)
查看>>
Kendo MVVM 数据绑定(七) Invisible/Visible
查看>>
[zz]kvm环境使用libvirt创建虚拟机
查看>>
bzoj1059 [ZJOI2007]矩阵游戏
查看>>
插入返回ibatis 的selectKey 实现插入数据后获得id
查看>>
vim 程序编辑器
查看>>
LIS(单调队列优化 C++ 版)(施工ing)
查看>>
刚接触Vuex
查看>>
四种加载React数据的技术对比(Meteor 转)
查看>>
Airthmetic_Approching
查看>>
操作文本文件
查看>>
公司项目的几个问题
查看>>
解决win7下打开Excel2007,报“向程序发送命令时出现问题”的错误
查看>>
Velocity快速入门教程
查看>>
关于集合常见的问题
查看>>
车牌正则表达式
查看>>
Win form碎知识点
查看>>
避免使用不必要的浮动
查看>>
第一节:ASP.NET开发环境配置
查看>>
sqlserver database常用命令
查看>>