news 2026/5/26 3:49:09

Excel文件解析与数据库存储方案

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Excel文件解析与数据库存储方案

1.系统现有的文件上传和下载是没有问题的,目前的需求就是将上传的文件进行解析并存入数据库中;

2.上传的文件类型目前都是XLSX类型,需要书写文件解析工具类,用来获取数据;

2.相关的数据库表字段并没有创建,根据上传文件不同创建不同数据库表进行存储文件数据;

3.不同类型的文件Service层需要根据业务需求进行控制,再调用SqlSession来操作数据库(写入数据)也就是增加/修改,删除操作已经存在需要测试是否有效;

文件解析与存储方案设计

文件解析工具类实现XLSX文件解析可使用Apache POI库,创建通用解析工具类处理不同文件类型的数据提取。示例工具类框架如下:

public class ExcelParserUtil { public static List<Map<String, Object>> parseXLSX(MultipartFile file) throws IOException { List<Map<String, Object>> dataList = new ArrayList<>(); try (XSSFWorkbook workbook = new XSSFWorkbook(file.getInputStream())) { XSSFSheet sheet = workbook.getSheetAt(0); // 读取表头作为字段名 XSSFRow headerRow = sheet.getRow(0); // 遍历数据行 for (int i = 1; i <= sheet.getLastRowNum(); i++) { Map<String, Object> rowData = new HashMap<>(); XSSFRow row = sheet.getRow(i); // 单元格数据处理逻辑 for (int j = 0; j < headerRow.getLastCellNum(); j++) { String fieldName = headerRow.getCell(j).getStringCellValue(); rowData.put(fieldName, row.getCell(j)); } dataList.add(rowData); } } return dataList; } }

动态表结构管理

表结构自动生成策略根据XLSX文件表头动态创建表结构,建议采用以下方式:

public void createTableFromExcel(String tableName, List<String> columnHeaders) { StringBuilder sql = new StringBuilder("CREATE TABLE IF NOT EXISTS ") .append(tableName).append(" (id INT AUTO_INCREMENT PRIMARY KEY, "); for (String header : columnHeaders) { sql.append(header.replaceAll("\\s+", "_")).append(" VARCHAR(255), "); } sql.deleteCharAt(sql.length()-2).append(")"); sqlSession.update("DynamicTableMapper.createTable", sql.toString()); }

业务层处理逻辑

多文件类型路由控制Service层通过文件特征(如文件名前缀)进行业务路由:

@Service public class FileProcessingService { @Autowired private SqlSession sqlSession; public void processFile(MultipartFile file) { String fileName = file.getOriginalFilename(); if (fileName.startsWith("ORDER_")) { processOrderFile(file); } else if (fileName.startsWith("INVENTORY_")) { processInventoryFile(file); } } private void processOrderFile(MultipartFile file) { // 订单业务特殊处理逻辑 List<Map<String, Object>> data = ExcelParserUtil.parseXLSX(file); sqlSession.insert("OrderMapper.batchInsert", data); } }

数据库操作验证

现有删除功能测试方案编写单元测试验证删除操作:

@Test public void testDeleteOperation() { Map<String, Object> params = new HashMap<>(); params.put("tableName", "test_table"); params.put("id", 1); int affectedRows = sqlSession.delete("CommonMapper.deleteById", params); assertEquals(1, affectedRows); }

类型安全处理建议

数据转换最佳实践在解析工具类中增加类型转换处理:

private Object convertCellValue(Cell cell) { switch (cell.getCellType()) { case NUMERIC: return cell.getNumericCellValue(); case STRING: return cell.getStringCellValue(); case BOOLEAN: return cell.getBooleanCellValue(); default: return null; } }

事务管理配置

批量操作事务控制在Service方法添加事务注解保证数据一致性:

@Transactional public void batchInsertData(String tableName, List<Map<String, Object>> data) { for (Map<String, Object> record : data) { record.put("tableName", tableName); sqlSession.insert("DynamicTableMapper.insert", record); } }
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/26 6:07:01

PySceneDetect实战宝典:高效视频场景检测与智能分割

PySceneDetect实战宝典&#xff1a;高效视频场景检测与智能分割 【免费下载链接】PySceneDetect :movie_camera: Python and OpenCV-based scene cut/transition detection program & library. 项目地址: https://gitcode.com/gh_mirrors/py/PySceneDetect PySceneD…

作者头像 李华
网站建设 2026/5/25 15:22:05

TradingAgents-CN国产大模型金融分析实战:从技术选型到业务落地

在金融科技快速发展的今天&#xff0c;如何选择适合的AI大模型进行投资分析成为行业痛点。TradingAgents-CN通过深度集成DeepSeek、通义千问、智谱AI等国产大模型&#xff0c;为中文用户提供了一套完整的智能化金融分析解决方案。 【免费下载链接】TradingAgents-CN 基于多智能…

作者头像 李华
网站建设 2026/5/26 6:08:33

BetaFlight代码解析(22)—任务调度器和系统基础架构

本文档介绍了Betaflight的实时任务调度系统和性能监控基础设施。调度器协调所有飞行控制任务、传感器处理、通信和用户界面组件的执行&#xff0c;同时严格满足关键飞行控制回路的时序要求。概述Betaflight采用基于优先级的协作式多任务调度器&#xff0c;确保关键飞行控制任务…

作者头像 李华
网站建设 2026/5/26 5:54:27

AI生成 Python小游戏 怪物防御战???

一、前言一个一点人工都没有&#xff0c;全靠Deepseek生成的游戏是什么样子的呢&#xff1f;答&#xff1a;二、游戏介绍1. 游戏核心机制玩家控制&#xff1a;WASD移动&#xff0c;鼠标瞄准射击怪物系统&#xff1a;黄色怪物&#xff1a;3点生命&#xff0c;速度慢&#xff0c;…

作者头像 李华
网站建设 2026/5/26 5:54:37

永磁同步电机双矢量MPC模型预测电流控制探索

永磁同步电机双矢量MPC模型预测电流控制(有参考文献&#xff09; 参考文献&#xff1a;《永磁同步电机双矢量模型预测电流控制_徐艳平》 [1]在占空比模型预测电流控制中&#xff0c;由于第二个电压矢量只能是零电压矢量&#xff0c;在每个采样周期中只能选择6个固定方向上的电压…

作者头像 李华
网站建设 2026/5/26 5:35:06

reaConverter Pro:专业级批量文件转换工具,支持700+格式高效处理

reaConverter Pro是一款功能强大的专业级批量文件转换与处理工具&#xff0c;以其全面的格式支持和高效的批量处理能力&#xff0c;在图形图像处理领域占据重要地位。该软件集格式转换、批量编辑、自动化流程于一体&#xff0c;为专业用户提供了完整的文件处理解决方案。 获取…

作者头像 李华