The OfficeOpenXML classes in the com-hfg library are still a work in progress but functional Excel .xlsx files can be created.
The resulting output looks like this:
- Xlsx xlsx = new Xlsx();
- Workbook workbook = xlsx.getWorkbook();
- SsmlWorksheet sheet = workbook.addWorksheet();
- SsmlSheetData sheetData = sheet.getSheetData();
- sheetData.addRow().addCell("Hello World!");
- File testFile = new File("testSimple.xlsx");
- xlsx.write(testFile);
The resulting output looks like this:
- Xlsx xlsx = new Xlsx();
- Workbook workbook = xlsx.getWorkbook();
- SsmlWorksheet sheet = workbook.addWorksheet();
- SsmlSheetData sheetData = sheet.getSheetData();
- sheetData.addRow().addCell("Hello Merged World!");
- sheet.mergeCells(new CellRange("A1:C2"));
- File testFile = new File("testCellMerge.xlsx");
- xlsx.write(testFile);
This resulting output looks like this:
- Xlsx xlsx = new Xlsx();
- Workbook workbook = xlsx.getWorkbook();
- SsmlDifferentialFormat level1Format = new SsmlDifferentialFormat(xlsx);
- HTMLColor bgColor = HTMLColor.WHITE;
- level1Format.getFont().setColor(bgColor.getContrastingColor());
- level1Format.getFill().setBackgroundColor(bgColor);
- SsmlDifferentialFormat level2Format = new SsmlDifferentialFormat(xlsx);
- bgColor = HTMLColor.valueOf("FF00FF00");
- level2Format.getFont().setColor(bgColor.getContrastingColor());
- level2Format.getFill().setBackgroundColor(bgColor);
- SsmlDifferentialFormat level3Format = new SsmlDifferentialFormat(xlsx);
- bgColor = HTMLColor.valueOf("FF00A9FF");
- level3Format.getFont().setColor(bgColor.getContrastingColor());
- level3Format.getFill().setBackgroundColor(bgColor);
- SsmlDifferentialFormat level4Format = new SsmlDifferentialFormat(xlsx);
- bgColor = HTMLColor.valueOf("FFAA00FF");
- level4Format.getFont().setColor(bgColor.getContrastingColor());
- level4Format.getFill().setBackgroundColor(bgColor);
- SsmlDifferentialFormat level5Format = new SsmlDifferentialFormat(xlsx);
- bgColor = HTMLColor.valueOf("FFFF0000");
- level5Format.getFont().setColor(bgColor.getContrastingColor());
- level5Format.getFill().setBackgroundColor(bgColor);
- SsmlDifferentialFormat level6Format = new SsmlDifferentialFormat(xlsx);
- bgColor = HTMLColor.valueOf("FFC00000");
- level6Format.getFont().setColor(bgColor.getContrastingColor());
- level6Format.getFill().setBackgroundColor(bgColor);
- SsmlWorksheet sheet = workbook.addWorksheet();
- SsmlSheetData sheetData = sheet.getSheetData();
- // Generate some mock data
- SsmlRow row = sheetData.addRow();
- row.addCell();
- row.addCell("A");
- row.addCell("B");
- row.addCell("C");
- row = sheetData.addRow();
- row.addCell("A");
- row.addCell(100);
- row.addCell(75);
- row.addCell(80);
- row = sheetData.addRow();
- row.addCell("B");
- row.addCell(40);
- row.addCell(100);
- row.addCell(60);
- row = sheetData.addRow();
- row.addCell("C");
- row.addCell(92);
- row.addCell(83);
- row.addCell(100);
- // Assign some conditional formatting to a range of cells
- SsmlConditionalFormatting conditionalFormatting = sheet.addConditionalFormatting(new CellRange("B2:D4"));
- conditionalFormatting.addRule(SsmlCfRuleType.expression)
- .setFormat(level1Format)
- .setStopIfTrue(true)
- .addFormula("ROW()=COLUMN()");
- conditionalFormatting.addRule(SsmlCfRuleType.cellIs)
- .setFormat(level2Format)
- .setStopIfTrue(true)
- .setOperator(SsmlCfOperator.between)
- .addFormula(90)
- .addFormula(100);
- conditionalFormatting.addRule(SsmlCfRuleType.cellIs)
- .setFormat(level3Format)
- .setStopIfTrue(true)
- .setOperator(SsmlCfOperator.between)
- .addFormula(80)
- .addFormula(90);
- conditionalFormatting.addRule(SsmlCfRuleType.cellIs)
- .setFormat(level4Format)
- .setStopIfTrue(true)
- .setOperator(SsmlCfOperator.between)
- .addFormula(70)
- .addFormula(80);
- conditionalFormatting.addRule(SsmlCfRuleType.cellIs)
- .setFormat(level5Format)
- .setStopIfTrue(true)
- .setOperator(SsmlCfOperator.between)
- .addFormula(60)
- .addFormula(70);
- conditionalFormatting.addRule(SsmlCfRuleType.cellIs)
- .setFormat(level6Format)
- .setStopIfTrue(true)
- .setOperator(SsmlCfOperator.between)
- .addFormula(0)
- .addFormula(60);
- File testFile = new File("testConditionalFormatting.xlsx");
- xlsx.write(testFile);