From 2e994c878f976e4e8a1c92fea9b28cdf8048ac73 Mon Sep 17 00:00:00 2001 From: zouyu <2723363702@qq.com> Date: 星期六, 19 七月 2025 11:06:42 +0800 Subject: [PATCH] csv文件读取方法调整&添加数据库密码连接字段 --- pom.xml | 5 ++ src/main/java/com/chinaztt/mes/docx/dto/GetFileDto.java | 4 ++ src/main/java/com/chinaztt/mes/docx/util/TakeWords.java | 65 ++++++++++++++++++++++++++------ 3 files changed, 61 insertions(+), 13 deletions(-) diff --git a/pom.xml b/pom.xml index 0ea035f..da5ec86 100644 --- a/pom.xml +++ b/pom.xml @@ -79,6 +79,11 @@ <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency> + <dependency> + <groupId>com.opencsv</groupId> + <artifactId>opencsv</artifactId> + <version>5.7.1</version> + </dependency> </dependencies> <dependencyManagement> diff --git a/src/main/java/com/chinaztt/mes/docx/dto/GetFileDto.java b/src/main/java/com/chinaztt/mes/docx/dto/GetFileDto.java index d219560..4e113ad 100644 --- a/src/main/java/com/chinaztt/mes/docx/dto/GetFileDto.java +++ b/src/main/java/com/chinaztt/mes/docx/dto/GetFileDto.java @@ -22,4 +22,8 @@ private String fiberOpticRibbonCode; // 鍏夌氦甯︽暟鎹� private String fiberOpticRibbon; + //鏁版嵁搴撹繛鎺ヨ处鍙� + private String dbUser; + //鏁版嵁搴撹繛鎺ュ瘑鐮� + private String dbPassword; } diff --git a/src/main/java/com/chinaztt/mes/docx/util/TakeWords.java b/src/main/java/com/chinaztt/mes/docx/util/TakeWords.java index 3d77d75..9d791dd 100644 --- a/src/main/java/com/chinaztt/mes/docx/util/TakeWords.java +++ b/src/main/java/com/chinaztt/mes/docx/util/TakeWords.java @@ -2,6 +2,9 @@ import cn.hutool.core.io.FileUtil; import com.chinaztt.mes.docx.dto.GetFileDto; +import com.opencsv.CSVReader; +import com.opencsv.CSVReaderBuilder; +import com.opencsv.exceptions.CsvValidationException; import net.sourceforge.tess4j.Tesseract; import net.sourceforge.tess4j.TesseractException; import org.apache.commons.lang3.ObjectUtils; @@ -15,13 +18,18 @@ import org.apache.poi.xwpf.extractor.XWPFWordExtractor; import java.io.*; -import java.nio.file.Files; import java.sql.*; import java.util.*; +import java.util.regex.Pattern; public class TakeWords { private static final String splitIdentifier = "@-@"; // 鑷畾涔夊敮涓�鏍囪瘑绗� + + // 绉戝璁℃暟娉曟鍒欐ā寮� + private static final Pattern SCIENTIFIC_PATTERN = Pattern.compile( + "^[+-]?\\d+(\\.\\d+)?[eE][+-]?\\d+$" + ); public static Object readWordFile(File file) { String result = ""; @@ -84,23 +92,54 @@ public static Object readCsvFile(File file) { StringBuilder stringBuilder = new StringBuilder(); // 鍒涘缓 reader - try (BufferedReader br = Files.newBufferedReader(file.toPath())) { - // CSV鏂囦欢鐨勫垎闅旂 - String DELIMITER = ","; - // 鎸夎璇诲彇 - String line; - while ((line = br.readLine()) != null) { - // 鍒嗗壊 - String[] columns = line.split(DELIMITER); - // 鎵撳嵃琛� - stringBuilder.append(String.join(splitIdentifier, columns)).append("\n"); +// try (BufferedReader br = Files.newBufferedReader(file.toPath())) { +// // CSV鏂囦欢鐨勫垎闅旂 +// String DELIMITER = ","; +// // 鎸夎璇诲彇 +// String line; +// System.out.println(br.readLine()); +// while ((line = br.readLine()) != null) { +// // 鍒嗗壊 +// String[] columns = line.split(DELIMITER); +// // 鎵撳嵃琛� +// stringBuilder.append(String.join(splitIdentifier, columns)).append("\n"); +// } +// } catch (IOException ex) { +// ex.printStackTrace(); +// } + try (FileReader fileReader = new FileReader(file); + CSVReader csvReader = new CSVReaderBuilder(fileReader).build()) { + + String[] nextLine; + while ((nextLine = csvReader.readNext()) != null) { + // 澶勭悊姣忎竴琛屾暟鎹� + for (String cell : nextLine) { + if(StringUtils.isNotBlank(cell)){ + stringBuilder.append(scientificToNumber(cell)).append(splitIdentifier); + } + } + stringBuilder.append("\n"); } - } catch (IOException ex) { - ex.printStackTrace(); + } catch (IOException e) { + e.printStackTrace(); + } catch (CsvValidationException e) { + throw new RuntimeException(e); } return stringBuilder.toString(); } + /** + * 灏嗙瀛﹁鏁版硶杞崲涓烘暟瀛� + * @param cell + * @return + */ + public static String scientificToNumber(String cell){ + if(SCIENTIFIC_PATTERN.matcher(cell).matches()){ + return String.valueOf(Double.parseDouble(cell)); + } + return cell; + } + public static Object readMdbFile(File file, GetFileDto getFileDto) throws SQLException, ClassNotFoundException, InstantiationException, IllegalAccessException { Map<String, Object> tableMap = new HashMap<>(16); Properties prop = new Properties(); -- Gitblit v1.9.3