java Easyexcel 获取该路径下所有 Excel 文件(含子文件夹下),并把 Excel 文件最后修改时间为:一 周之内的 Excel 内容,合并到 mzy-merge.xlsx 文件中。 ② mzy-merge.xlsx 文件中,每个被合并文件内容最前部插入:该文件绝对路
时间: 2024-01-22 11:17:52 浏览: 114
Java处理100万行超大Excel文件秒级响应
3星 · 编辑精心推荐
径,并在每个文件内容之间插入一个空行。
以下是 Java 代码实现:
```java
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Date;
import java.util.List;
import com.alibaba.excel.EasyExcel;
import com.alibaba.excel.ExcelWriter;
import com.alibaba.excel.write.metadata.WriteSheet;
import com.alibaba.excel.write.metadata.WriteTable;
import com.alibaba.excel.write.metadata.fill.FillConfig;
import com.alibaba.excel.write.metadata.fill.FillWrapper;
public class ExcelMerge {
// 定义要遍历的文件夹路径
private static final String FOLDER_PATH = "C:/excel/";
// 定义要合并到的文件名
private static final String MERGE_FILE_NAME = "mzy-merge.xlsx";
// 定义每个被合并文件内容最前部插入的内容
private static final String FILE_PATH_PREFIX = "文件路径:";
public static void main(String[] args) {
// 获取一周前的日期
Calendar calendar = Calendar.getInstance();
calendar.setTime(new Date());
calendar.add(Calendar.DATE, -7);
Date oneWeekAgo = calendar.getTime();
// 获取所有 Excel 文件
List<File> excelFiles = getAllExcelFiles(new File(FOLDER_PATH));
// 遍历 Excel 文件,将一周内修改的文件内容合并到 mzy-merge.xlsx 文件中
ExcelWriter excelWriter = null;
try {
excelWriter = EasyExcel.write(MERGE_FILE_NAME).build();
WriteSheet writeSheet = EasyExcel.writerSheet().build();
for (File excelFile : excelFiles) {
if (excelFile.lastModified() < oneWeekAgo.getTime()) {
continue;
}
System.out.println("正在合并文件:" + excelFile.getAbsolutePath());
List<List<String>> data = EasyExcel.read(new FileInputStream(excelFile)).sheet().doReadSync();
for (int i = 0; i < data.size(); i++) {
data.get(i).add(0, FILE_PATH_PREFIX + excelFile.getAbsolutePath());
}
if (!data.isEmpty()) {
data.add(0, new ArrayList<>());
}
WriteTable writeTable = EasyExcel.writerTable().needHead(false).build();
FillConfig fillConfig = FillConfig.builder().forceNewRow(true).build();
FillWrapper fillWrapper = FillWrapper.builder().excelFile(excelFile.getAbsolutePath()).sheetNo(0).build();
excelWriter.fill(data, fillConfig, writeSheet, writeTable, fillWrapper);
}
} catch (Exception e) {
e.printStackTrace();
} finally {
if (excelWriter != null) {
excelWriter.finish();
}
}
}
/**
* 获取指定文件夹下所有 Excel 文件(含子文件夹)
*
* @param folder 文件夹
* @return Excel 文件列表
*/
private static List<File> getAllExcelFiles(File folder) {
List<File> excelFiles = new ArrayList<>();
if (folder.isDirectory()) {
File[] files = folder.listFiles();
if (files != null) {
for (File file : files) {
if (file.isDirectory()) {
excelFiles.addAll(getAllExcelFiles(file));
} else if (file.isFile() && file.getName().endsWith(".xlsx")) {
excelFiles.add(file);
}
}
}
}
return excelFiles;
}
}
```
这段代码使用了 EasyExcel 库来读写 Excel 文件,具体实现步骤如下:
1. 获取一周前的日期;
2. 遍历指定文件夹下所有 Excel 文件,并筛选出最后修改时间在一周内的文件;
3. 读取每个符合条件的 Excel 文件内容,并在最前部插入文件路径信息和一个空行;
4. 将每个 Excel 文件内容填充到 mzy-merge.xlsx 文件中的对应位置。
阅读全文