Я могу создать эффект условного форматирования цветовой шкалы (при этом цвет переднего плана ячеек зависит от того, как текущее значение ячейки сравнивается со значениями всех ячеек в диапазоне), однако я не могу найти реализацию условного форматирования Excel. Может ли Apache POI создать такое правило форматирования?
1 ответ
Ответ - да, в версии Apache POI 3.16.
sheet.getSheetConditionalFormatting().createConditionalFormattingColorScaleRule()
Прочтите этот пост, чтобы узнать, когда он был добавлен (3.13 beta 2): https://stackoverflow.com/a/32164925/231860
Вот модульный тест, демонстрирующий использование: https://svn.apache.org/repos/asf/poi/trunk/src/testcases/org/apache/poi/ss/usermodel/BaseTestConditionalFormatting.java
@Test
public void testCreateColorScaleFormatting() throws IOException {
Workbook wb1 = _testDataProvider.createWorkbook();
Sheet sheet = wb1.createSheet();
SheetConditionalFormatting sheetCF = sheet.getSheetConditionalFormatting();
ConditionalFormattingRule rule1 =
sheetCF.createConditionalFormattingColorScaleRule();
ColorScaleFormatting clrFmt = rule1.getColorScaleFormatting();
assertEquals(3, clrFmt.getNumControlPoints());
assertEquals(3, clrFmt.getColors().length);
assertEquals(3, clrFmt.getThresholds().length);
clrFmt.getThresholds()[0].setRangeType(RangeType.MIN);
clrFmt.getThresholds()[1].setRangeType(RangeType.NUMBER);
clrFmt.getThresholds()[1].setValue(10d);
clrFmt.getThresholds()[2].setRangeType(RangeType.MAX);
CellRangeAddress [] regions = { CellRangeAddress.valueOf("A1:A5") };
sheetCF.addConditionalFormatting(regions, rule1);
Похожие вопросы
Связанные вопросы
Новые вопросы
java
Java — это высокоуровневый объектно-ориентированный язык программирования. Используйте этот тег, если у вас возникли проблемы с использованием или пониманием самого языка. Этот тег часто используется вместе с другими тегами для библиотек и/или фреймворков, используемых разработчиками Java.
.xls
(HSSF) или.xlsx
(XSSF)?