Browse Source

20260327消耗优化

lijianlin/feature-20260225-金币钱包体系
sunjiabei 2 weeks ago
parent
commit
0e4aa60bff
  1. 29
      src/main/java/com/example/demo/password/ExcelProcessor.java

29
src/main/java/com/example/demo/password/ExcelProcessor.java

@ -19,16 +19,15 @@ public class ExcelProcessor {
String inputFilePath = "D:\\地区导出.xls"; // 输入文件路径 String inputFilePath = "D:\\地区导出.xls"; // 输入文件路径
String outputFilePath = "D:\\output.xlsx"; // 输出文件路径 String outputFilePath = "D:\\output.xlsx"; // 输出文件路径
try (FileInputStream fis = new FileInputStream(inputFilePath);
HSSFWorkbook oldWorkbook = new HSSFWorkbook(fis)) {
try (FileInputStream fis = new FileInputStream(new File(inputFilePath));
Workbook workbook = new HSSFWorkbook(fis);
FileOutputStream fos = new FileOutputStream(new File(outputFilePath))) {
Sheet sheet = oldWorkbook.getSheetAt(0);
Sheet sheet = workbook.getSheetAt(0); // 获取第一个工作表
RestTemplate restTemplate = new RestTemplate(); RestTemplate restTemplate = new RestTemplate();
// 2. 单独创建新xlsx + 输出流必须放一起自动关闭
try (FileOutputStream fos = new FileOutputStream(outputFilePath);
XSSFWorkbook outputWorkbook = new XSSFWorkbook()) {
// 创建新的输出工作簿
Workbook outputWorkbook = new XSSFWorkbook();
Sheet outputSheet = outputWorkbook.createSheet("Result"); Sheet outputSheet = outputWorkbook.createSheet("Result");
Row headerRow = outputSheet.createRow(0); Row headerRow = outputSheet.createRow(0);
headerRow.createCell(0).setCellValue("jwcode"); headerRow.createCell(0).setCellValue("jwcode");
@ -37,25 +36,27 @@ public class ExcelProcessor {
int outputRowIndex = 1; int outputRowIndex = 1;
for (int i = 1; i <= sheet.getLastRowNum(); i++) {
// 遍历输入文件的每一行
for (int i = 1; i <= sheet.getLastRowNum(); i++) { // 假设第一行是标题
Row row = sheet.getRow(i); Row row = sheet.getRow(i);
if (row == null) continue; if (row == null) continue;
String jwcode = row.getCell(1).getStringCellValue();
String jwcode = row.getCell(1).getStringCellValue(); // 假设 jwcode 在第一列
System.out.println("Processing jwcode: " + jwcode);
// 调用接口
Map<String, String> result = callApi(jwcode, restTemplate); Map<String, String> result = callApi(jwcode, restTemplate);
// 写入结果到新 Excel 文件
Row outputRow = outputSheet.createRow(outputRowIndex++); Row outputRow = outputSheet.createRow(outputRowIndex++);
outputRow.createCell(0).setCellValue(jwcode); outputRow.createCell(0).setCellValue(jwcode);
outputRow.createCell(1).setCellValue(result.getOrDefault("name", "未知")); outputRow.createCell(1).setCellValue(result.getOrDefault("name", "未知"));
outputRow.createCell(2).setCellValue(result.getOrDefault("country", "未知")); outputRow.createCell(2).setCellValue(result.getOrDefault("country", "未知"));
} }
// 3. 写入 + 强制刷盘
// 保存输出文件
outputWorkbook.write(fos); outputWorkbook.write(fos);
fos.flush();
}
System.out.println("文件生成成功:" + outputFilePath);
System.out.println("Processing completed. Output file saved to: " + outputFilePath);
} catch (Exception e) { } catch (Exception e) {
e.printStackTrace(); e.printStackTrace();

Loading…
Cancel
Save