Java使用POI操作Excel文件
我们可以使用POI操作Excel文件,本文主要介绍:“导入POI的Maven依赖”、“创建Poi对象”、“Poi读取Excel工作表数目”、“Poi读取Excel名称”、“Poi读取Excel一列数据,放到list集合中”、“读取单元格数据”、“Poi读取Excel一行数据,放到List集合”。
1、导入POI的Maven依赖。
<dependency><groupId>org.apache.poi</groupId><artifactId>poi</artifactId><version>3.17</version></dependency><dependency><groupId>org.apache.poi</groupId><artifactId>poi-ooxml</artifactId><version>3.17</version></dependency>
2、创建Poi对象。
protected Workbook wb;private PoiUtils() {}public PoiUtils(String filePath) throws IOException {InputStream inputStream = new FileInputStream(filePath);if (filePath.endsWith(".xls")) {wb = new HSSFWorkbook(inputStream); // 处理以.xls结尾的excel} else {wb = new XSSFWorkbook(inputStream);// 处理以.xlsx结尾的excel}}
3、Poi读取Excel工作表数目。
/** @return -1 读取文件发生意外 */public int readExcelSheetNO(String file) {try {int sheetNO = wb.getNumberOfSheets();wb.close();return sheetNO;} catch (IOException e) {e.printStackTrace();return -1;}}
4、Poi读取Excel名称。
/** @return 空串,读取文件发生意外 */public String readExcelSheetName(String file, int sheetAtNO) {try {String sheetName = wb.getSheetName(sheetAtNO);wb.close();return sheetName;} catch (IOException e) {e.printStackTrace();return "";}}
5、Poi读取Excel一列数据,放到list集合中。
/** 读取Excel表格一列内容* * @return null,读取文件发生意外 */public List<String> readExcelCell(String file, int sheetAtNO, int cellNO) {List<String> listRow = new ArrayList<String>();// 解析公式结果try {FormulaEvaluator evaluator = wb.getCreationHelper().createFormulaEvaluator();Sheet sheet = wb.getSheetAt(sheetAtNO);listRow = doReadExcelCell(cellNO, evaluator, sheet);wb.close();} catch (IOException e) {e.printStackTrace();return null;}return listRow;}private List<String> doReadExcelCell(int cellNO, FormulaEvaluator evaluator, Sheet sheet) {int maxRow = sheet.getPhysicalNumberOfRows(); // 总行数System.out.println("总行数maxRow:" + maxRow);List<String> listRow = new ArrayList<String>();for (int i = 0; i < maxRow; i++) {Row row = sheet.getRow(i);if(row == null) {return null;}Cell cell = row.getCell((short) cellNO);CellValue cellValue = evaluator.evaluate(cell);if (cellValue == null) {listRow.add(null);continue;}listRow.add(getCellFormatValue(i, cellNO, cellValue));}return listRow;}
6、读取单元格数据。
/** 根据Cell类型设置数据* * @param i* @param rowNO* * @param cellValue* @return */private String getCellFormatValue(int rowNO, int column, CellValue cellValue) {String cellStringValueOf = "";if (cellValue != null) {// 经过公式转换,函数只剩下数值型、布尔型、字符串型// 判断当前Cell的Typeswitch (cellValue.getCellTypeEnum()) {case NUMERIC: // 数值型if (String.valueOf(cellValue.getNumberValue()).contains(".")) {NumberFormat numberFormat = NumberFormat.getInstance();numberFormat.setGroupingUsed(false);cellStringValueOf = numberFormat.format(cellValue.getNumberValue());} else {cellStringValueOf = String.valueOf(cellValue.getNumberValue());}break;case BOOLEAN: // 布尔型cellStringValueOf = String.valueOf(cellValue.getBooleanValue());break;case ERROR: // 错误System.out.println("读取错误" + ",行:" + rowNO + ",列:" + column);break;case BLANK: // 空值break;case FORMULA: // 公式型break;default: // 字符串型cellStringValueOf = cellValue.getStringValue();break;}} else {System.out.println("读取错误");}return cellStringValueOf;}
7、Poi读取Excel一行数据,放到List集合。
/** @param file* 要读取的文件路径* @param sheetAtNO* 读取名称为sheetName的表格* @param rowNO* 读取第n+1行* @return null,读取文件发生意外 */public List<String> readExcelRow(String file, String sheetName, int rowNO) {// 解析公式结果try {FormulaEvaluator evaluator = wb.getCreationHelper().createFormulaEvaluator();Sheet sheet = wb.getSheet(sheetName);List<String> listRow = new ArrayList<String>();listRow = readRow(rowNO, evaluator, sheet);wb.close();return listRow;} catch (IOException e) {e.printStackTrace();return null;}}/** 读取一行数据 */protected List<String> readRow(int rowNO, FormulaEvaluator evaluator, Sheet sheet) {Row titleRow = sheet.getRow(0);// 第一行的条数Row row = sheet.getRow(rowNO);// 首行总列数int titleColNum = titleRow.getPhysicalNumberOfCells();// System.out.println("首行总列数titleColNum:" + titleColNum);// // 这行总列数// int colNum = row.getPhysicalNumberOfCells();// System.out.println("总列数colNum:" + colNum);List<String> listRow = new ArrayList<String>();for (int i = 0; i < titleColNum; i++) {Cell cell = row.getCell((short) i);CellValue cellValue = evaluator.evaluate(cell);if (cellValue == null) {listRow.add(null);continue;}listRow.add(getCellFormatValue(rowNO, i, cellValue));}return listRow;}
Java使用POI操作Excel文件相关推荐
- java使用poi操作excel文件_使用 java apache poi 操作 excel xlsx 文件
工作中临时需要对各种订单量进行简单的统计分析,为了方便简单学习了apache poi 对 xlsx 文件的基本操作,简单记录 1. 引包 org.apache.poi poi-ooxml 4.1.2 ...
- Java 使用 POI 对 Excel文件 进行读写操作
Java 使用 POI 对 Excel文件 进行读写操作 一.背景 目前正在做一个问卷功能模块,收集完问卷信息后,需要将数据库中的数据导出到Excel数据表中进行留存,因此就学习了在Java中如何对E ...
- execle java,Java使用POI操作Excel
Java使用POI操作Excel 1. POI操作Excel 1.1. 依赖 org.apache.poi poi 4.1.0 org.apache.poi poi-ooxml 4.1.0 org.a ...
- Apache POI操作Excel文件
Apache POI是用Java编写的免费开源的跨平台的Java API,Apache POI提供API给Java程序对Microsoft Office格式档案读和写的功能,其中使用最多的就是使用PO ...
- java使用poi生成Excel文件并合并单元格
java使用poi生成Excel文件并合并单元格 业务需要根据 分管部门 字段进行合并,现在提供一种思路. controller层 @Inject(target = "/inf ...
- Java使用poi操作excel注意事项
Java使用poi操作excel注意事项 1.如果只需要获取sheet信息,用流模式打开文件即可获取,消耗内存少 2.上传的文件需要校验,防止Excel包含异常的缓存文件,缓存文件可能会有几百兆,会瞬 ...
- JAVA使用POI操作Excel表,XSSF(xlsx)和HSSF(xls)
JAVA使用POI操作Excel表,XSSF(xlsx)和HSSF(xls) *** POI的结构: ---*HSSF - 提供读写Microsoft Excel格式档案的功能. ---*XSSF - ...
- java使用poi操作excel删除一整行
java使用poi操作excel删除一整行 需求1:删除excel表格第4行 代码示例: sheet.shiftRows(4, sheet.getLastRowNum(),-1); 第一个参数为行数( ...
- Java 使用 POI 操作 Excel
Apache POI 基本介绍 Apache POI 是 Apache 软件基金会提供的 100% 开源库.支持 Excel 库的所有基本功能. 图片来源:易百教程 基本概念 在 POI 中,Work ...
最新文章
- 5.3.5 TCP拥塞控制
- 我的自白——华夏藏珍第一周
- bootstrap3 徽章_【可预留】不倒翁工作室,数码宝贝 勇气徽章
- C#高效编程话题集1(每期10话题)
- STM32三种启动模式 boot0 boot1
- iis7php怎么301重定向,iis7/8设置网站301重定向的方法
- C#算法设计排序篇之06-堆排序(附带动画演示程序)
- Linux Enterprise Cluster选译
- tomcat部署项目启动采坑之UnknownHostException
- Atitit 常见每日流程日程日常工作.docx v7 r8f
- 推荐5款心仪的电脑软件
- systen v消息队列(一)
- 网络服务器是硬盘吗,云盘与网络服务器硬盘是什么?它们一样吗?
- ## 机械干了一辈子,螺栓上的8.8是什么意思
- Java基础12 implement和extends的区别
- 淘宝店铺上传成人用品类宝贝的错误解决
- 在线matlab,web版,还是挺好用的
- Java系列之:查看jar包中源代码
- Android studio软件编译生成APK
- C罗8000W英镑到底是多少钱?!