# Excel工具类 **Repository Path**: dd-coding/excel-tools ## Basic Information - **Project Name**: Excel工具类 - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2020-11-17 - **Last Updated**: 2020-12-18 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # Excel工具类 #### 介绍 一直以来都想写一个Excel的工具类,毕竟在平时的业务开发中,尤其是管理后台的开发中,经常有Excel文档上传和下载的功能。 #### 依赖 依赖包官方文档 http://poi.apache.org/apidocs/dev/org/apache/poi/ss/usermodel/package-summary.html 依赖包: ````xml org.apache.poi poi 4.1.2 ```` ````xml org.apache.poi poi-ooxml 4.1.2 ```` #### 读取Excel 操作过程: 1. 创建工作簿Workbook 2. 遍历sheet --> 遍历row --> 遍历column 存在的问题:大批量读取时会出现内存泄露的问题 网上给出的解决办法:先转成CSV文件在进行读取,后续继续研究一下 注意读取单元格数据时,要先判断单元格的格式,按格式读取,否则会报错,如日期类型,如果按String类型读取的话,则会报错,具体见官方文档 ```` /** * 读取单元格数据 * @param cell 单元格 * @return 返回单元格数据 */ private static Object getCellValue(Cell cell) { CellType cellType = cell.getCellType(); if (cellType.equals(CellType.FORMULA)) { cellType = cell.getCachedFormulaResultType(); } switch (cellType) { case _NONE: case BLANK: case ERROR: return ""; case BOOLEAN: return cell.getBooleanCellValue(); case STRING: return cell.getStringCellValue(); case NUMERIC: if (DateUtil.isCellDateFormatted(cell)) { String format = cell.getCellStyle().getDataFormatString(); // format总是以“;@”结尾,具体没看明白,所以这里需要处理一下 format = format.substring(0, format.length() - 2); Date date = cell.getDateCellValue(); return new CellDateFormatter(format).format(date); } return cell.getNumericCellValue(); } return ""; } ```` #### 写入Excel ### Excel写入压缩包