Excel表单格式化使用Apache POI

我正在从使用Apache POI库的Java代码创build一个Excel报告。 格式化Excel单元格时遇到问题。 请在下面find一段代码。

XSSFWorkbook workbook = new XSSFWorkbook(); XSSFSheet sheet = workbook.createSheet("coverageData"); int rownum = 0,cellnum=0; Row row1 = sheet.createRow(rownum++); Cell cell10 = row1.createCell(cellnum++); cell10.setCellValue("cell data"); XSSFCellStyle row1style = (XSSFCellStyle)cell10.getCellStyle(); XSSFColor grayColor = new XSSFColor(Color.DARK_GRAY); row1style.setFillBackgroundColor(grayColor); cell10.setCellStyle(row1style); try { //Write the workbook in file system FileOutputStream out = new FileOutputStream(new File("P:\\automation\\Spreadsheet.xlsx")); workbook.write(out); out.close(); System.out.println("Spreadsheet.xlsx written successfully on disk."); } catch (Exception e) { e.printStackTrace(); } 

这里的问题是我在代码的最后一行中设置cell10风格,但它没有受到程序创build的Excel表中的影响。

提前致谢。

你需要像这样设置颜色:

 final XSSFCellStyle description = (XSSFCellStyle) workbook.createCellStyle(); description.setFillForegroundColor( yourColor ); description.setFillPattern( FillPatternType.SOLID_FOREGROUND ); 

这是,你需要一个填充模式

试试吧,波纹pipe对我很好:

 import java.io.File; import java.io.FileOutputStream; import org.apache.poi.ss.usermodel.Cell; import org.apache.poi.ss.usermodel.CellStyle; import org.apache.poi.ss.usermodel.IndexedColors; import org.apache.poi.ss.usermodel.Row; import org.apache.poi.ss.usermodel.Sheet; import org.apache.poi.ss.usermodel.Workbook; import org.apache.poi.xssf.usermodel.XSSFWorkbook; public class TestClass { public static void main(String[] args){ Workbook wb = new XSSFWorkbook(); Sheet sheet = wb.createSheet("coverageData"); int rownum = 0,cellnum=0; Row row1 = sheet.createRow((short)rownum++); //Set Color style start CellStyle row1style = wb.createCellStyle(); row1style.setFillBackgroundColor(IndexedColors.LIGHT_GREEN.getIndex()); row1style.setFillPattern(CellStyle.BIG_SPOTS); //Set Color style end Cell cell10 = row1.createCell((short)cellnum++); cell10.setCellStyle(row1style); cell10.setCellValue("cell data"); try{ //Write the workbook in file system FileOutputStream out = new FileOutputStream(new File("Spreadsheet.xlsx")); wb.write(out); out.close(); System.out.println("Spreadsheet.xlsx written successfully on disk."); } catch (Exception e) { e.printStackTrace(); } } }