1、POI处理excel,替换单元格中公式,直接setValue,替换不生效
2、删除单元格,重新创建单元格,创建格式,设置值,WPS没问题,但是excel打开后直接报错 部分内容有问题,是否尝试尽量恢复
解决方案:
public static String readExcel(File file, String replaceValue) throws IOException {
String canonicalPath = file.getCanonicalPath();
String newFilePath = StringUtils.substringBeforeLast(canonicalPath, ".")+"_bak."+ StringUtils.substringAfterLast(canonicalPath, ".");
try (BufferedInputStream bufferedInputStream = new BufferedInputStream(new FileInputStream(file));
Workbook workbook = WorkbookFactory.create(bufferedInputStream);
OutputStream out = new FileOutputStream(newFilePath)) {
DataFormat dataFormat = workbook.createDataFormat();
Sheet sheet = workbook.getSheetAt(0);
CellStyle cellStyle1 = workbook.createCellStyle();
Row row = sheet.getRow(1);
Cell cell1 = row.getCell(0);
row.removeCell(cell1);
Cell cell = row.createCell(1);
cellStyle1.setDataFormat(dataFormat.getFormat("yyyy/M/dd"));
cell.setCellFormula("TODAY()"+replaceValue);
cell.setCellStyle(cellStyle1);
sheet.setForceFormulaRecalculation(true);
workbook.write(out);
out.flush();
} catch (IOException e) {
e.printStackTrace();
}
return newFilePath;
}