POI解析Excel文件
POI解析数据步骤
-
创建工作薄
根据不同的excel版本进行创建,
即xls :
Workbook workbook = new HSSFWorkbook(输入流);
或xlsx :
Workbook workbook = new XSSFWorkbook(输入流); //evaluator是公式解析,会把单元格中的内容进行解析,经过解析的单元格类型最后只会有Boolean、Numeric和String三种数据类型,此外就是Error了 FormulaEvaluator evaluator = workbook.getCreationHelper().createFormulaEvaluator();
-
从工作薄中拿到工作表
Sheet sheet = workbook.getSheetAt(0);
-
取工作表中的每一行
Row row = sheet.getRow(行号);
-
取行中的每一个单元格
Cell cell = row.getCell(列号); //公式解析单元格,也可以不用这个公式解析,直接用cell在下边操作 CellValue cellValue = evaluator.evaluate(cell);
-
获取单元格内容的类型
int num = cellValue.getCellType();
-
根据类型来取值
switch (num) { case Cell.CELL_TYPE_BOOLEAN: boolean bool= cellValue.getBooleanValue()); break; case Cell.CELL_TYPE_NUMERIC: String cellstr = cell.toString(); cell.setCellType(Cell.CELL_TYPE_STRING); String valueCell = cell.getStringCellValue(); if (valueCell.indexOf(".") > -1) { valueCell = cellstr; } //最后的值为valueCell break; case Cell.CELL_TYPE_STRING: String value = cell.getStringCellValue()); break; case Cell.CELL_TYPE_FORMULA: map.put(key[colIx], ""); break; case Cell.CELL_TYPE_BLANK: break; case Cell.CELL_TYPE_ERROR: break; default: break; }
-
获取到excel文件中所有内容之后进行非空校验和数据校验
-
最后保存到数据库表中
导出,可以用XLSTransformer类
如果是正常的导出逻辑其实是和解析时一样的,先创建一个工作薄,然后工作表,然后行,最后创建单元格填写内容
InputStream model = new FileInputStream(new File(模板路径));
// 实例化 XLSTransformer 对象
XLSTransformer xlsTransformer = new XLSTransformer();
// 获取 Workbook ,传入 模板 和 数据
// map是要导出的数据
//获取查询的数据
List<Map<String, String>> pensionStatesList = (List<Map<String, String>>)dao.findForList("PensionStatesDao.queryPensionStatesData", pageReq);
Map map = new HashMap();
map.put("data",pensionStatesList);
map.put("sheetDate", "2022-10-1至2022-10-31");
Workbook workbook = xlsTransformer.transformXLS(model,map);
//path为要导出到的文件路径,fileName为文件名
OutputStream os = new FileOutputStream(path+fileName);
workbook.write(os);
// 关闭和刷新管道,不然可能会出现表格数据不齐,打不开之类的问题
model.close();
os.flush();
os.close();
模板格式
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek “源神”启动!「GitHub 热点速览」
· 微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章
· C# 集成 DeepSeek 模型实现 AI 私有化(本地部署与 API 调用教程)
· DeepSeek R1 简明指南:架构、训练、本地部署及硬件要求
· 2 本地部署DeepSeek模型构建本地知识库+联网搜索详细步骤