Bladeren bron

07版本Excel,修复因为shift的浅复制问题,导致文本不显示的错误2

4.1.3.A
jueyue 6 jaren geleden
bovenliggende
commit
bc15400afe
1 gewijzigde bestanden met toevoegingen van 92 en 0 verwijderingen
  1. +92
    -0
      easypoi-base/src/main/java/cn/afterturn/easypoi/util/PoiExcelTempUtil.java

+ 92
- 0
easypoi-base/src/main/java/cn/afterturn/easypoi/util/PoiExcelTempUtil.java Bestand weergeven

@@ -0,0 +1,92 @@
package cn.afterturn.easypoi.util;

import org.apache.poi.ss.usermodel.*;

import java.util.Date;
import java.util.HashMap;
import java.util.Map;

/**
* poi 4.0 07版本在 shift操作下有bug,不移动了单元格以及单元格样式,没有移动cell
* cell还是复用的原理的cell,导致wb输出的时候没有输出值
* 等待修复的时候删除这个问题
*
* @author by jueyue on 19-6-17.
*/
public class PoiExcelTempUtil {

/**
* 把这N行的数据,cell重新设置下,修复因为shift的浅复制问题,导致文本不显示的错误
*
* @param sheet
* @param startRow
* @param endRow
*/
public static void reset(Sheet sheet, int startRow, int endRow) {
for (int i = startRow; i <= endRow; i++) {
Row row = sheet.getRow(i);
int cellNum = row.getLastCellNum();
for (int j = 0; j < cellNum; j++) {
Map<String, Object> map = copyCell(row.getCell(j));
row.removeCell(row.getCell(j));
Cell cell = row.createCell(j);
cell.setCellStyle((CellStyle) map.get("cellStyle"));
if ((boolean) map.get("isDate")) {
cell.setCellValue((Date) map.get("value"));
} else {
CellType cellType = (CellType) map.get("cellType");
switch (cellType) {
case NUMERIC:
cell.setCellValue((double) map.get("value"));
break;
case STRING:
cell.setCellValue((String) map.get("value"));
case FORMULA:
break;
case BLANK:
break;
case BOOLEAN:
cell.setCellValue((boolean) map.get("value"));
case ERROR:
break;
}
}
}
}

}

private static Map copyCell(Cell cell) {
Map<String, Object> map = new HashMap<>();
map.put("cellType", cell.getCellType());
map.put("isDate", CellType.NUMERIC == cell.getCellType() && DateUtil.isCellDateFormatted(cell));
map.put("value", getValue(cell));
map.put("cellStyle", cell.getCellStyle());
return map;
}

private static Object getValue(Cell cell) {
if (CellType.NUMERIC == cell.getCellType() && DateUtil.isCellDateFormatted(cell)) {
return cell.getDateCellValue();
}
switch (cell.getCellType()) {
case _NONE:
return null;
case NUMERIC:
return cell.getNumericCellValue();
case STRING:
return cell.getStringCellValue();
case FORMULA:
return cell.getCellFormula();
case BLANK:
break;
case BOOLEAN:
return cell.getBooleanCellValue();
case ERROR:
break;
}
return null;
}


}

Laden…
Annuleren
Opslaan