要解决Apache POI在单元格中显示损坏的日期的问题,你可以使用以下代码示例:
import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.DateUtil;
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.ss.usermodel.Sheet;
import org.apache.poi.ss.usermodel.Workbook;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
public class ExcelDateFixer {
public static void main(String[] args) {
String filePath = "your_file_path.xlsx"; // 替换为你的Excel文件路径
try {
FileInputStream fis = new FileInputStream(filePath);
Workbook workbook = new XSSFWorkbook(fis);
Sheet sheet = workbook.getSheetAt(0); // 替换为你要处理的工作表索引
fixDates(sheet); // 修复日期
fis.close();
FileOutputStream fos = new FileOutputStream(filePath);
workbook.write(fos);
workbook.close();
fos.close();
System.out.println("修复完成!");
} catch (IOException e) {
e.printStackTrace();
}
}
private static void fixDates(Sheet sheet) {
for (Row row : sheet) {
for (Cell cell : row) {
if (cell.getCellType() == CellType.NUMERIC && DateUtil.isCellDateFormatted(cell)) {
Date dateCellValue = cell.getDateCellValue();
String formattedDate = formatDate(dateCellValue);
cell.setCellValue(formattedDate);
}
}
}
}
private static String formatDate(Date date) {
DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd"); // 日期格式,可以根据需要进行更改
return dateFormat.format(date);
}
}
请将代码中的your_file_path.xlsx
替换为你的Excel文件路径,并根据需要更改日期格式。这个代码将使用Apache POI库打开Excel文件,遍历每个单元格,如果单元格包含日期,则将日期修复为正确的格式。然后,它将保存修复后的Excel文件。
希望这可以帮助到你!