How many POI developers actively monitor this list?  I haven't gotten any
answers to those questions.
Meanwhile I have a new question.  If I create a conditional formatting
which is linked to the entire document and colors every other row, how can
I get individual colors in cell styles to override that, or how can I get
the conditional formatting to only color cells that have no color in their
individual cell styles?

On Tue, Dec 13, 2016 at 9:59 AM, Eric Douglas <edoug...@blockhouse.com>
wrote:

> So I took another stab at it.  This seems to work, but I have questions.
>
> import java.awt.Color;
> import java.io.File;
> import java.io.FileOutputStream;
> import java.io.IOException;
>
> import org.apache.poi.ss.usermodel.ConditionalFormattingRule;
> import org.apache.poi.ss.usermodel.FillPatternType;
> import org.apache.poi.ss.usermodel.PatternFormatting;
> import org.apache.poi.ss.usermodel.SheetConditionalFormatting;
> import org.apache.poi.ss.util.CellRangeAddress;
> import org.apache.poi.xssf.usermodel.XSSFCell;
> import org.apache.poi.xssf.usermodel.XSSFCellStyle;
> import org.apache.poi.xssf.usermodel.XSSFColor;
> import org.apache.poi.xssf.usermodel.XSSFSheet;
> import org.apache.poi.xssf.usermodel.XSSFWorkbook;
>
> public class TestExcel {
>
>      public static void main(String[] args) throws IOException {
>           XSSFWorkbook wb = new XSSFWorkbook();
>           XSSFSheet curSheet = wb.createSheet("Sheet " +
> (wb.getNumberOfSheets() + 1));
>           XSSFCell c1 = curSheet.createRow(0).createCell(0);
>           c1.setCellValue(wb.getCreationHelper().createRichTextString("No
> color"));
>           XSSFCell c2 = curSheet.createRow(1).createCell(0);
>           c2.setCellValue(wb.getCreationHelper().createRichTextString("Color
> this cell"));
>           XSSFCell c3 = curSheet.createRow(2).createCell(0);
>           c3.setCellValue(wb.getCreationHelper().createRichTextString("No
> color"));
>           XSSFCell c4 = curSheet.createRow(3).createCell(0);
>           c4.setCellValue(wb.getCreationHelper().createRichTextString("Color
> this cell"));
>           // set one cell's color
>           final XSSFCellStyle style1 = wb.createCellStyle();
>           style1.setFillForegroundColor(new XSSFColor(new
> Color(123,124,125)));
>           style1.setFillPattern(FillPatternType.SOLID_FOREGROUND);
>           c4.setCellStyle(style1);
>           // set all cells' color, every other row
>           CellRangeAddress[] regions = {CellRangeAddress.valueOf("A1:
> AMJ1048576")};
>           SheetConditionalFormatting sheetCF = curSheet.
> getSheetConditionalFormatting();
>           ConditionalFormattingRule rule1 = sheetCF.
> createConditionalFormattingRule("ISEVEN(ROW())");
>           PatternFormatting fill1 = rule1.createPatternFormatting();
>           final XSSFColor customColor = new XSSFColor(new Color(228, 247,
> 247));
>           fill1.setFillBackgroundColor(customColor);
>           fill1.setFillPattern(PatternFormatting.SOLID_FOREGROUND);
>           sheetCF.addConditionalFormatting(regions, rule1);
>           File fi = new File("output.xlsx");
>           if (fi.exists()) {
>                fi.delete();
>           }
>           FileOutputStream output = new FileOutputStream(fi);
>           wb.write(output);
>           wb.close();
>           output.flush();
>           output.close();
>      }
> }
>
> 1) Why does it change the background of one cell using
> setFillForegroundColor, but to change the background of many cells with a
> condition I have to call setFillBackgroundColor??
> 2) Why does this create a generic format?  When I call
> createPatternFormatting() it shows up in the LibreOffice Calc Styles and
> Formatting section as ConditionalStyle_1.  Can I name this style?
> 3) Why does this look like a regular style in the Calc program with many
> attributes I can set, but the API only allows me to set the fill color?
>
> On Mon, Dec 12, 2016 at 4:33 PM, Nick Burch <apa...@gagravarr.org> wrote:
>
>> On Mon, 12 Dec 2016, Eric Douglas wrote:
>>
>>> I found one sample that shows how to code the condition using
>>> org.apache.poi.ss.usermodel.SheetConditionalFormatting.addConditionalFormatting()
>>> to put in the formula that would color each cell if it's in an even
>>> numbered row, but I'm having trouble figuring out the API to apply the
>>> formula to every cell on the worksheet.
>>>
>>
>> For every cell on a sheet, just give a cellrangeaddress that covers the
>> whole extent
>>
>> For every formula cell, you'd need to loop over all cells checking the
>> cell type, then add just those
>>
>> Nick
>>
>> ---------------------------------------------------------------------
>> To unsubscribe, e-mail: user-unsubscr...@poi.apache.org
>> For additional commands, e-mail: user-h...@poi.apache.org
>>
>>
>

Reply via email to