1 回答
TA贡献1820条经验 获得超2个赞
在Excel文件中,单元格样式位于工作簿级别,而不是工作表级别或单元格级别。因此,您cell.getCellStyle()从工作簿级别获取单元格样式,该样式也可能已经应用于其他工作表中的其他单元格。如果您随后更改该样式,这将更改应用了该单元格样式的所有工作表中的所有单元格。
您需要首先在工作簿级别创建所有需要的单元格样式,然后将这些样式应用于单元格,或者您需要使用CellUtil方法。使用CellUtil方法应该是首选方法。
CellUtil方法用于将单个单元格样式属性设置为单个单元格。然后,这些方法会在内部决定是否需要在工作簿级别创建新的单元格样式,或者是否已经存在只需要应用的此类样式。
在您的情况下,这可能看起来像:
import org.apache.poi.ss.usermodel.*;
import org.apache.poi.ss.util.CellUtil;
import java.util.Map;
import java.util.HashMap;
...
void highlightMemberNames(Sheet individualSheet, String memberName) {
Map<String, Object> properties = new HashMap<String, Object>();
properties.put(CellUtil.FILL_PATTERN, FillPatternType.SOLID_FOREGROUND);
properties.put(CellUtil.FILL_FOREGROUND_COLOR, IndexedColors.LIGHT_GREEN.getIndex());
properties.put(CellUtil.ALIGNMENT, HorizontalAlignment.CENTER);
for (Row row : individualSheet) {
for (Cell cell : row) {
if (cell.getCellType() == CellType.STRING && cell.getStringCellValue().equals(memberName)) {
CellUtil.setCellStyleProperties(cell, properties);
}
}
}
}
添加回答
举报