我有一个扩展名为 xls 的 excel 文件。我想根据每行的第一列值给所有行的背景颜色。我的代码不能根据我的要求工作。背景颜色正在发生,但不符合要求。我正在使用 apache POI jar 来实现。
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.hssf.util.HSSFColor;
import org.apache.poi.poifs.filesystem.POIFSFileSystem;
import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.CellStyle;
import org.apache.poi.ss.usermodel.Row;
public class DemoPainter {
public void colorSheet() throws IOException {
FileInputStream fi = new FileInputStream(
"/vobs/SampleFile.xls");
POIFSFileSystem fs = new POIFSFileSystem(fi);
HSSFWorkbook wb = new HSSFWorkbook(fs);
HSSFSheet sheet = wb.getSheetAt(0);
System.out.println("Sheet Name: " + sheet.getSheetName());
startColor(sheet, wb);
}
public void startColor(HSSFSheet sheet, HSSFWorkbook wb) throws IOException {
for (int rowIndex = 0; rowIndex < sheet.getPhysicalNumberOfRows(); rowIndex++){
Row row=sheet.getRow(rowIndex);
Cell cell=row.getCell(0);
System.out.println(cell.getStringCellValue());
if(cell.getStringCellValue().equals("modified")){
setYellowColor(wb,row);
}
else if(cell.getStringCellValue().equals("removed")){
setRedColor();
}
else {
setGreenColor();
}
}
FileOutputStream out = new FileOutputStream(new File("/vobs/SampleFile1.xls"));
wb.write(out);
out.close();
}
public void setYellowColor(HSSFWorkbook wb,Row row){
CellStyle style = wb.createCellStyle();
System.out.println("started Yellow color");
style.setFillForegroundColor(HSSFColor.YELLOW.index);
style.setFillPattern(CellStyle.SOLID_FOREGROUND);
row.setRowStyle(style);
}
public void setRedColor(){
}
public void setGreenColor(){
}
}
必需的输出 excel 工作表图像, 基于我的代码行为的当前输出 excel 工作表图像
任何人都可以在这里帮忙吗?