如何更改 java 中现有 excel(xlsx 或 xls)单元格的颜色

How to change color of a cell of an existing excel (xlsx or xls) in java

我有要求,我必须读取并验证 excel 文件并插入数据库,最初我正在读取文件并将其插入数据库,如果数据已经存在于数据库中,我我正在从数据库中返回重复项的行号和列号,我需要根据行号和列号更改这些单元格的颜色。

谁能帮我解决这个问题。或者可以提出任何关于如何读取/写入和验证 excel 文件的想法,(验证在某种意义上我需要将 excel 文件中的数据与数据库中的数据进行比较)。

目前我正在使用apache poi

此答案适用于 .xls;不过,xlsx 的 API 非常相似。 读取 Excel 文件很容易,为该文件打开一个 FileInputstream,然后创建一个 HSSFWorkbook

HSSFWorkbook workbook = new HSSFWorkbook(inputStream);

要更改某些单元格的颜色,您首先必须使用该颜色创建样式(更改单元格的样式也会更改其他一些属性,例如字体等,所以事情可能会变得有点混乱在这里,但这就是 excel 的工作原理)

colorStyle = workbook.createCellStyle();
colorStyle.setFillPattern(HSSFCellStyle.SOLID_FOREGROUND);
colorStyle.setFillForegroundColor(HSSFColor.RED.index);

现在您必须遍历所有工作簿中的行,找出重复项,并更改这些单元格的样式:

cell.setCellStyle(colorStyle);

最后,您通过 FileOutputStream 将工作簿写入新文件

workbook.write(outputStream);