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);
}
}
}
}
添加回答
舉報