下面是一个使用Apache POI进行条件格式化日期的示例代码,其中日期格式为MM/DD/YYYY HH:MM,并且条件是日期大于14:00:
import org.apache.poi.ss.usermodel.*;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import java.io.FileOutputStream;
import java.io.IOException;
public class ExcelConditionalFormattingExample {
public static void main(String[] args) {
Workbook workbook = new XSSFWorkbook();
Sheet sheet = workbook.createSheet("Sheet1");
// 创建样式
CellStyle style = workbook.createCellStyle();
style.setDataFormat(workbook.getCreationHelper().createDataFormat().getFormat("MM/DD/YYYY HH:MM"));
// 创建条件格式规则
SheetConditionalFormatting conditionalFormatting = sheet.getSheetConditionalFormatting();
ConditionalFormattingRule rule = conditionalFormatting.createConditionalFormattingRule(
ComparisonOperator.GT, "14:00");
PatternFormatting patternFormatting = rule.createPatternFormatting();
patternFormatting.setFillBackgroundColor(IndexedColors.YELLOW.index);
// 设置条件格式范围
CellRangeAddress[] range = {CellRangeAddress.valueOf("A1:A10")};
conditionalFormatting.addConditionalFormatting(range, rule);
// 在范围内创建单元格并应用样式
for (int i = 0; i < 10; i++) {
Row row = sheet.createRow(i);
Cell cell = row.createCell(0);
cell.setCellValue("01/01/2022 " + (i < 5 ? "15:00" : "13:00"));
cell.setCellStyle(style);
}
// 将工作簿写入文件
try (FileOutputStream outputStream = new FileOutputStream("output.xlsx")) {
workbook.write(outputStream);
System.out.println("Excel文件已成功创建!");
} catch (IOException e) {
e.printStackTrace();
}
}
}
上述代码创建了一个新的Excel工作簿,并在第一个工作表中设置了条件格式。范围为A1到A10,条件为日期大于14:00。在范围内创建了10个单元格,并为单元格设置了日期值和样式。最后,将工作簿写入名为"output.xlsx"的文件中。