笔记:记一次Excel导入数据失败问题Destination Input(42)

甲方大叔曰:初始化下测试环境的数据

我:OK[敲起openrowset准备往数据表导入数据,cao。。。 。。。 数据库不能用openrowset ,只好拿出上次留存Excel导数据上去了]

故事开始了第二个文件BOOM   [见鬼了,明明上次可以导入的]

看了数据表数据居然有写进去,但又报了错如下 [不管了,数量对得上就行,等下再研究什么问题]:

原因是上次删除垃圾数据用键盘的DELETE键没用Excel中鼠标右键删除,结果导致这个问题的发生,但数据可以完整的导入到数据表[这想杀死强迫症人er],在导入的预览中那几行又不会显示

END   右键删除那几个空行就行了,233.。。。。。非强迫症可以忽略这个操作,数据导得进去就行了

要使用Java进行Excel数据导入,可以按照以下步骤操作: ### 步骤 1: 设置环境与依赖 确保项目中已添加 Apache POI 库作为依赖。对于Maven项目,在pom.xml文件中添加如下依赖: ```xml <dependencies> <dependency> <groupId>org.apache.poi</groupId> <artifactId>poi-ooxml</artifactId> <version>5.2.1</version> </dependency> </dependencies> ``` ### 步骤 2: 实现文件上传与存储 假设我们已经有一个功能用于接收文件上传请求并将文件保存至服务器。这里简化过程仅展示核心逻辑。 ```java public class FileUploadService { public void uploadFile(MultipartFile file) throws IOException { String fileName = file.getOriginalFilename(); // Save the uploaded file to a specific directory File destination = new File("/path/to/save/directory/" + fileName); Files.copy(file.getInputStream(), destination.toPath()); } } ``` ### 步骤 3: 使用 Apache POI 解析 Excel 文件 使用 Apache POI 进行 Excel 文件解析: ```java import org.apache.poi.ss.usermodel.*; import org.apache.poi.xssf.usermodel.XSSFWorkbook; public List<List<Object>> readExcelFile(String filePath) { try ( FileInputStream fis = new FileInputStream(filePath); Workbook workbook = new XSSFWorkbook(fis); ) { Sheet sheet = workbook.getSheetAt(0); // 假设只有一个工作表 Iterator<Row> rowIterator = sheet.iterator(); List<List<Object>> dataRows = new ArrayList<>(); while (rowIterator.hasNext()) { Row currentRow = rowIterator.next(); Iterator<Cell> cellIterator = currentRow.cellIterator(); List<Object> rowData = new ArrayList<>(); while (cellIterator.hasNext()) { Cell currentCell = cellIterator.next(); switch (currentCell.getCellType()) { case STRING: rowData.add(currentCell.getStringCellValue()); break; case NUMERIC: double numericValue = currentCell.getNumericCellValue(); if (DateUtil.isCellDateFormatted(currentCell)) { rowData.add(new Date(numericValue)); } else { rowData.add(numericValue); } break; default: // Handle other cell types as needed or skip them } } dataRows.add(rowData); } return dataRows; } catch (IOException e) { throw new RuntimeException("Error reading Excel file", e); } } ``` ### 步骤 4: 数据入库 假设已有一个对应的 Java 模型类 `Exam`,使用 `readExcelFile` 方法返回的数据来填充数据库: ```java public class ExamRepository { @Autowired private JpaTemplate jpaTemplate; public void saveAll(List<List<Object>> dataList) { dataList.forEach(row -> { Exam exam = new Exam(); // 根据字段名设置对应属性值 exam.setField1((String) row.get(0)); // 假设第一个单元格值对应字段1 // 继续设置其他字段... jpaTemplate.save(exam); }); } } ``` ### 相关问题: 1. 如何优化导入过程中文件大小限制和性能瓶颈? 2. 如何处理非标准的 Excel 表格结构或编码问题? 3. 在导入大量数据时,如何有效地进行并发处理以提高效率?
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值