java写一个方法:function2,参数为:文件路径名。 功能要求:使用Easyexcel ① 获取该路径下所有 Excel 文件(含子文件夹下),并把 Excel 文件最后修改时间为:一 周之内的 Excel 内容,合并到 mzy-merge.xlsx 文件中。 ② mzy-merge.xlsx 文件中,每个被合并文件内容最前部插入:该文件绝对路径,且背景色 为黄色,字体为红色。 ③ 返回值为:mzy-merge.xlsx 文件的绝对路径字符串
时间: 2024-01-22 17:17:58 浏览: 92
以下是实现该方法的Java代码:
```java
import java.io.File;
import java.io.IOException;
import java.util.ArrayList;
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.WriteWorkbook;
public class FileUtils {
public static String function2(String filePath) throws IOException {
// 获取当前时间一周前的时间
long oneWeekAgo = System.currentTimeMillis() - 7 * 24 * 60 * 60 * 1000;
// 遍历文件夹,获取所有Excel文件
List<File> excelFiles = new ArrayList<>();
getExcelFiles(new File(filePath), excelFiles);
// 创建合并后的Excel文件
String mergedFilePath = filePath + "/mzy-merge.xlsx";
ExcelWriter excelWriter = EasyExcel.write(mergedFilePath).build();
// 遍历Excel文件,筛选最近一周修改的文件并合并到新文件中
for (File excelFile : excelFiles) {
long lastModified = excelFile.lastModified();
if (lastModified >= oneWeekAgo) {
// 获取文件绝对路径
String absolutePath = excelFile.getAbsolutePath();
// 在新文件中插入文件路径
WriteSheet writeSheet = EasyExcel.writerSheet().build();
excelWriter.write(new ArrayList<List<String>>() {
{
add(new ArrayList<String>() {
{
add(absolutePath);
}
});
}
}, writeSheet);
// 获取新文件中插入的行号
int rowNum = writeSheet.getSheetNo();
// 设置插入的单元格样式
WriteWorkbook writeWorkbook = excelWriter.writeContext().writeWorkbook();
writeWorkbook.getSheet().setColumnWidth(0, 10000);
writeSheet.setHeadStyle(writeWorkbook.createCellStyle().fillForegroundColorIndexed(13));
writeSheet.setHeadFont(writeWorkbook.createFont().setColor(IndexedColors.RED.getIndex()));
// 读取原Excel文件内容并插入到新文件中
EasyExcel.read(excelFile).sheet().headRowNumber(0).doRead().stream().forEach(row -> {
List<String> newRow = new ArrayList<>(row);
newRow.add(0, "");
excelWriter.write(new ArrayList<List<String>>() {
{
add(newRow);
}
}, writeSheet);
});
}
}
// 关闭ExcelWriter
excelWriter.finish();
return new File(mergedFilePath).getAbsolutePath();
}
private static void getExcelFiles(File file, List<File> excelFiles) {
if (file.isDirectory()) {
for (File subFile : file.listFiles()) {
getExcelFiles(subFile, excelFiles);
}
} else if (file.getName().endsWith(".xls") || file.getName().endsWith(".xlsx")) {
excelFiles.add(file);
}
}
}
```
该方法首先获取当前时间一周前的时间,然后遍历指定文件夹及其子文件夹,获取所有Excel文件,筛选最近一周修改的文件并合并到新文件中。在新文件中插入文件路径的同时,设置插入的单元格样式,最后返回新文件的绝对路径字符串。该方法使用了阿里巴巴的Easyexcel库来读写Excel文件。
阅读全文