コード例 #1
0
        /**
         * Highlight cells based on their values
         */
        static void SameCell(ISheet sheet)
        {
            sheet.CreateRow(0).CreateCell(0).SetCellValue(84);
            sheet.CreateRow(1).CreateCell(0).SetCellValue(74);
            sheet.CreateRow(2).CreateCell(0).SetCellValue(50);
            sheet.CreateRow(3).CreateCell(0).SetCellValue(51);
            sheet.CreateRow(4).CreateCell(0).SetCellValue(49);
            sheet.CreateRow(5).CreateCell(0).SetCellValue(41);

            ISheetConditionalFormatting sheetCF = sheet.SheetConditionalFormatting;

            // Condition 1: Cell Value Is   greater than  70   (Blue Fill)
            IConditionalFormattingRule rule1 = sheetCF.CreateConditionalFormattingRule(ComparisonOperator.GreaterThan, "70");
            IPatternFormatting         fill1 = rule1.CreatePatternFormatting();

            fill1.FillBackgroundColor = (IndexedColors.Blue.Index);
            fill1.FillPattern         = FillPattern.SolidForeground;

            // Condition 2: Cell Value Is  less than      50   (Green Fill)
            IConditionalFormattingRule rule2 = sheetCF.CreateConditionalFormattingRule(ComparisonOperator.LessThan, "50");
            IPatternFormatting         fill2 = rule2.CreatePatternFormatting();

            fill2.FillBackgroundColor = (IndexedColors.Green.Index);
            fill2.FillPattern         = FillPattern.SolidForeground;

            CellRangeAddress[] regions =
            {
                CellRangeAddress.ValueOf("A1:A6")
            };

            sheetCF.AddConditionalFormatting(regions, rule1, rule2);

            sheet.GetRow(0).CreateCell(2).SetCellValue("<== Condition 1: Cell Value is greater than 70 (Blue Fill)");
            sheet.GetRow(4).CreateCell(2).SetCellValue("<== Condition 2: Cell Value is less than 50 (Green Fill)");
        }
コード例 #2
0
        /**
         * Use Excel conditional formatting to highlight items that are in a list on the worksheet.
         */
        static void InList(ISheet sheet)
        {
            sheet.CreateRow(0).CreateCell(0).SetCellValue("Codes");
            sheet.CreateRow(1).CreateCell(0).SetCellValue("AA");
            sheet.CreateRow(2).CreateCell(0).SetCellValue("BB");
            sheet.CreateRow(3).CreateCell(0).SetCellValue("GG");
            sheet.CreateRow(4).CreateCell(0).SetCellValue("AA");
            sheet.CreateRow(5).CreateCell(0).SetCellValue("FF");
            sheet.CreateRow(6).CreateCell(0).SetCellValue("XX");
            sheet.CreateRow(7).CreateCell(0).SetCellValue("CC");

            sheet.GetRow(0).CreateCell(2).SetCellValue("Valid");
            sheet.GetRow(1).CreateCell(2).SetCellValue("AA");
            sheet.GetRow(2).CreateCell(2).SetCellValue("BB");
            sheet.GetRow(3).CreateCell(2).SetCellValue("CC");

            ISheetConditionalFormatting sheetCF = sheet.SheetConditionalFormatting;

            // Condition 1: Formula Is   =A2=A1   (White Font)
            IConditionalFormattingRule rule1 = sheetCF.CreateConditionalFormattingRule("COUNTIF($C$2:$C$4,A2)");
            IPatternFormatting         fill1 = rule1.CreatePatternFormatting();

            fill1.FillBackgroundColor = (IndexedColors.LightBlue.Index);
            fill1.FillPattern         = FillPattern.SolidForeground;

            CellRangeAddress[] regions =
            {
                CellRangeAddress.ValueOf("A2:A8")
            };

            sheetCF.AddConditionalFormatting(regions, rule1);

            sheet.GetRow(2).CreateCell(3).SetCellValue("<== Use Excel conditional formatting to highlight items that are in a list on the worksheet");
        }
コード例 #3
0
 public XSSFDxfStyleProvider(CT_Dxf dxf, int stripeSize, IIndexedColorMap colorMap)
 {
     this.stripeSize = stripeSize;
     this.colorMap   = colorMap;
     if (dxf == null)
     {
         border = null;
         font   = null;
         number = null;
         fill   = null;
     }
     else
     {
         border = dxf.IsSetBorder() ? new XSSFBorderFormatting(dxf.border) : null;
         font   = dxf.IsSetFont() ? new XSSFFontFormatting(dxf.font) : null;
         if (dxf.IsSetNumFmt())
         {
             CT_NumFmt numFmt = dxf.numFmt;
             number = new ExcelNumberFormat((int)numFmt.numFmtId, numFmt.formatCode);
         }
         else
         {
             number = null;
         }
         fill = dxf.IsSetFill() ? new XSSFPatternFormatting(dxf.fill) : null;
     }
 }
コード例 #4
0
        public void TestShiftRows()
        {
            IWorkbook wb    = _testDataProvider.CreateWorkbook();
            ISheet    sheet = wb.CreateSheet();

            ISheetConditionalFormatting sheetCF = sheet.SheetConditionalFormatting;

            IConditionalFormattingRule rule1 = sheetCF.CreateConditionalFormattingRule(
                ComparisonOperator.Between, "SUM(A10:A15)", "1+SUM(B16:B30)");
            IFontFormatting fontFmt = rule1.CreateFontFormatting();

            fontFmt.SetFontStyle(true, false);

            IPatternFormatting patternFmt = rule1.CreatePatternFormatting();

            patternFmt.FillBackgroundColor = (/*setter*/ HSSFColor.Yellow.Index);

            IConditionalFormattingRule rule2 = sheetCF.CreateConditionalFormattingRule(
                ComparisonOperator.Between, "SUM(A10:A15)", "1+SUM(B16:B30)");
            IBorderFormatting borderFmt = rule2.CreateBorderFormatting();

            borderFmt.BorderDiagonal = BorderStyle.Medium;


            CellRangeAddress[] regions =
            {
                new CellRangeAddress(2, 4, 0, 0), // A3:A5
            };
            sheetCF.AddConditionalFormatting(regions, rule1);
            sheetCF.AddConditionalFormatting(regions, rule2);

            // This row-shift should destroy the CF region
            sheet.ShiftRows(10, 20, -9);
            Assert.AreEqual(0, sheetCF.NumConditionalFormattings);

            // re-add the CF
            sheetCF.AddConditionalFormatting(regions, rule1);
            sheetCF.AddConditionalFormatting(regions, rule2);

            // This row shift should only affect the formulas
            sheet.ShiftRows(14, 17, 8);
            IConditionalFormatting cf1 = sheetCF.GetConditionalFormattingAt(0);

            Assert.AreEqual("SUM(A10:A23)", cf1.GetRule(0).Formula1);
            Assert.AreEqual("1+SUM(B24:B30)", cf1.GetRule(0).Formula2);
            IConditionalFormatting cf2 = sheetCF.GetConditionalFormattingAt(1);

            Assert.AreEqual("SUM(A10:A23)", cf2.GetRule(0).Formula1);
            Assert.AreEqual("1+SUM(B24:B30)", cf2.GetRule(0).Formula2);

            sheet.ShiftRows(0, 8, 21);
            cf1 = sheetCF.GetConditionalFormattingAt(0);
            Assert.AreEqual("SUM(A10:A21)", cf1.GetRule(0).Formula1);
            Assert.AreEqual("1+SUM(#REF!)", cf1.GetRule(0).Formula2);
            cf2 = sheetCF.GetConditionalFormattingAt(1);
            Assert.AreEqual("SUM(A10:A21)", cf2.GetRule(0).Formula1);
            Assert.AreEqual("1+SUM(#REF!)", cf2.GetRule(0).Formula2);
        }
コード例 #5
0
        void MakeFailedFormattingRules()
        {
            IConditionalFormattingRule rule1 = sheet.SheetConditionalFormatting.CreateConditionalFormattingRule(ComparisonOperator.NotEqual, "0");
            IPatternFormatting         fill1 = rule1.CreatePatternFormatting();

            fill1.FillBackgroundColor = IndexedColors.Red.Index;
            fill1.FillPattern         = (short)FillPattern.SolidForeground;

            failedFormattingRules = new IConditionalFormattingRule[] { rule1 };
        }
コード例 #6
0
        public void TestCreatePatternFormatting()
        {
            IWorkbook workbook = _testDataProvider.CreateWorkbook();
            ISheet    sheet    = workbook.CreateSheet();

            ISheetConditionalFormatting sheetCF = sheet.SheetConditionalFormatting;

            IConditionalFormattingRule rule1      = sheetCF.CreateConditionalFormattingRule(ComparisonOperator.Equal, "7");
            IPatternFormatting         patternFmt = rule1.CreatePatternFormatting();

            Assert.AreEqual(0, patternFmt.FillBackgroundColor);
            patternFmt.FillBackgroundColor = (/*setter*/ HSSFColor.Red.Index);
            Assert.AreEqual(HSSFColor.Red.Index, patternFmt.FillBackgroundColor);

            Assert.AreEqual(0, patternFmt.FillForegroundColor);
            patternFmt.FillForegroundColor = (/*setter*/ HSSFColor.Blue.Index);
            Assert.AreEqual(HSSFColor.Blue.Index, patternFmt.FillForegroundColor);

            Assert.AreEqual((short)FillPattern.NoFill, patternFmt.FillPattern);
            patternFmt.FillPattern = (short)FillPattern.SolidForeground;
            Assert.AreEqual((short)FillPattern.SolidForeground, patternFmt.FillPattern);
            patternFmt.FillPattern = (short)FillPattern.NoFill;
            Assert.AreEqual((short)FillPattern.NoFill, patternFmt.FillPattern);
            if (this._testDataProvider.GetSpreadsheetVersion() == SpreadsheetVersion.EXCEL97)
            {
                patternFmt.FillPattern = (short)FillPattern.Bricks;
                Assert.AreEqual((short)FillPattern.Bricks, patternFmt.FillPattern);
            }

            IConditionalFormattingRule[] cfRules = { rule1 };

            CellRangeAddress[] regions = { CellRangeAddress.ValueOf("A1:A5") };

            sheetCF.AddConditionalFormatting(regions, cfRules);

            // Verification
            IConditionalFormatting cf = sheetCF.GetConditionalFormattingAt(0);

            Assert.IsNotNull(cf);

            Assert.AreEqual(1, cf.NumberOfRules);

            IPatternFormatting r1fp = cf.GetRule(0).GetPatternFormatting();

            Assert.IsNotNull(r1fp);

            Assert.AreEqual(HSSFColor.Red.Index, r1fp.FillBackgroundColor);
            Assert.AreEqual(HSSFColor.Blue.Index, r1fp.FillForegroundColor);
            if (this._testDataProvider.GetSpreadsheetVersion() == SpreadsheetVersion.EXCEL97)
            {
                Assert.AreEqual((short)FillPattern.Bricks, r1fp.FillPattern);
            }
        }
コード例 #7
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="path"></param>
        /// <param name="maxRowIndex">Row index of max values</param>
        /// <param name="minRowIndex">Row index of min values</param>
        /// <param name="numFaiRows"></param>
        /// <param name="numFaiColumns"></param>
        /// <param name="numMiscRows">Count of rows other than fai value rows</param>
        public static void FormatFaiExcel(string path, int maxRowIndex, int minRowIndex, int numFaiRows,
                                          int numFaiColumns, int numMiscRows)
        {
            XSSFWorkbook wb;

            using (FileStream file = new FileStream(path, FileMode.Open, FileAccess.Read))
            {
                wb = new XSSFWorkbook(file);
            }
            // Delete unformatted file
            File.Delete(path);

            var ws = wb.GetSheetAt(0);


            for (int j = 0; j < numFaiColumns; j++)
            {
                var columnIndex = GetExcelColumnName(j + 1);
                var maxFormula  = $"${columnIndex}${maxRowIndex + 1}";
                var minFormula  = $"${columnIndex}${minRowIndex + 1}";

                ISheetConditionalFormatting sheetCF = ws.SheetConditionalFormatting;

                // Max rule
                IConditionalFormattingRule maxRule =
                    sheetCF.CreateConditionalFormattingRule(ComparisonOperator.GreaterThan, maxFormula);
                IPatternFormatting fill1 = maxRule.CreatePatternFormatting();
                fill1.FillBackgroundColor = (IndexedColors.Red.Index);
                fill1.FillPattern         = FillPattern.SolidForeground;

                // min rule
                IConditionalFormattingRule minRule =
                    sheetCF.CreateConditionalFormattingRule(ComparisonOperator.LessThan, minFormula);
                IPatternFormatting fill2 = minRule.CreatePatternFormatting();
                fill2.FillBackgroundColor = (IndexedColors.Blue.Index);
                fill2.FillPattern         = FillPattern.SolidForeground;

                CellRangeAddress[] regions =
                {
                    CellRangeAddress.ValueOf($"{columnIndex}{numMiscRows+1}:{columnIndex}{numFaiRows+numMiscRows}")
                };

                sheetCF.AddConditionalFormatting(regions, maxRule, minRule);
            }


            using (var fs = File.Create(path))
            {
                wb.Write(fs);
            }
        }
コード例 #8
0
        public void TestClone()
        {
            IWorkbook wb      = _testDataProvider.CreateWorkbook();
            ISheet    sheet   = wb.CreateSheet();
            String    formula = "7";

            ISheetConditionalFormatting sheetCF = sheet.SheetConditionalFormatting;

            IConditionalFormattingRule rule1   = sheetCF.CreateConditionalFormattingRule(formula);
            IFontFormatting            fontFmt = rule1.CreateFontFormatting();

            fontFmt.SetFontStyle(true, false);

            IPatternFormatting patternFmt = rule1.CreatePatternFormatting();

            patternFmt.FillBackgroundColor = (/*setter*/ HSSFColor.Yellow.Index);


            IConditionalFormattingRule rule2 = sheetCF.CreateConditionalFormattingRule(ComparisonOperator.Between, "1", "2");

            IConditionalFormattingRule[] cfRules =
            {
                rule1, rule2
            };

            short col = 1;

            CellRangeAddress[] regions =
            {
                new CellRangeAddress(0, 65535, col, col)
            };

            sheetCF.AddConditionalFormatting(regions, cfRules);

            try
            {
                wb.CloneSheet(0);
            }
            catch (Exception e)
            {
                if (e.Message.IndexOf("needs to define a clone method") > 0)
                {
                    Assert.Fail("Indentified bug 45682");
                }
                throw e;
            }
            Assert.AreEqual(2, wb.NumberOfSheets);
        }
コード例 #9
0
        void MakeOutcomeFormattingRules()
        {
            IConditionalFormattingRule rule1 = sheet.SheetConditionalFormatting.CreateConditionalFormattingRule(ComparisonOperator.Equal, "\"" + KnownOutcomes.Passed + "\"");
            IPatternFormatting         fill1 = rule1.CreatePatternFormatting();

            fill1.FillBackgroundColor = IndexedColors.BrightGreen.Index;
            fill1.FillPattern         = (short)FillPattern.SolidForeground;

            IConditionalFormattingRule rule2 = sheet.SheetConditionalFormatting.CreateConditionalFormattingRule(ComparisonOperator.Equal, "\"" + KnownOutcomes.Failed + "\"");
            IPatternFormatting         fill2 = rule2.CreatePatternFormatting();

            fill2.FillBackgroundColor = IndexedColors.Red.Index;
            fill2.FillPattern         = (short)FillPattern.SolidForeground;

            outcomeFormattingRules = new IConditionalFormattingRule[] { rule1, rule2 };
        }
コード例 #10
0
        public void TestCreatePatternFormatting()
        {
            IWorkbook workbook = _testDataProvider.CreateWorkbook();
            ISheet    sheet    = workbook.CreateSheet();

            ISheetConditionalFormatting sheetCF = sheet.SheetConditionalFormatting;

            IConditionalFormattingRule rule1      = sheetCF.CreateConditionalFormattingRule(ComparisonOperator.EQUAL, "7");
            IPatternFormatting         patternFmt = rule1.CreatePatternFormatting();

            Assert.AreEqual(0, patternFmt.FillBackgroundColor);
            patternFmt.FillBackgroundColor = (/*setter*/ IndexedColors.RED.Index);
            Assert.AreEqual(IndexedColors.RED.Index, patternFmt.FillBackgroundColor);

            Assert.AreEqual(0, patternFmt.FillForegroundColor);
            patternFmt.FillForegroundColor = (/*setter*/ IndexedColors.BLUE.Index);
            Assert.AreEqual(IndexedColors.BLUE.Index, patternFmt.FillForegroundColor);

            Assert.AreEqual(PatternFormatting.NO_Fill, patternFmt.FillPattern);
            patternFmt.FillPattern = (/*setter*/ PatternFormatting.SOLID_FOREGROUND);
            Assert.AreEqual(PatternFormatting.SOLID_FOREGROUND, patternFmt.FillPattern);
            patternFmt.FillPattern = (/*setter*/ PatternFormatting.NO_Fill);
            Assert.AreEqual(PatternFormatting.NO_Fill, patternFmt.FillPattern);
            patternFmt.FillPattern = (/*setter*/ PatternFormatting.BRICKS);
            Assert.AreEqual(PatternFormatting.BRICKS, patternFmt.FillPattern);

            IConditionalFormattingRule[] cfRules = { rule1 };

            CellRangeAddress[] regions = { CellRangeAddress.ValueOf("A1:A5") };

            sheetCF.AddConditionalFormatting(regions, cfRules);

            // Verification
            IConditionalFormatting cf = sheetCF.GetConditionalFormattingAt(0);

            Assert.IsNotNull(cf);

            Assert.AreEqual(1, cf.NumberOfRules);

            IPatternFormatting r1fp = cf.GetRule(0).GetPatternFormatting();

            Assert.IsNotNull(r1fp);

            Assert.AreEqual(IndexedColors.RED.Index, r1fp.FillBackgroundColor);
            Assert.AreEqual(IndexedColors.BLUE.Index, r1fp.FillForegroundColor);
            Assert.AreEqual(PatternFormatting.BRICKS, r1fp.FillPattern);
        }
コード例 #11
0
        public static void ConditionFormat(ISheet sheet, int rowIndex)
        {
            ISheetConditionalFormatting sheetCF = sheet.SheetConditionalFormatting;

            IConditionalFormattingRule rule = sheetCF.CreateConditionalFormattingRule("$B3<>\"Transferred\"");
            IPatternFormatting         fill = rule.CreatePatternFormatting();

            fill.FillBackgroundColor = (IndexedColors.Red.Index);
            fill.FillPattern         = FillPattern.SolidForeground;

            CellRangeAddress[] regions =
            {
                CellRangeAddress.ValueOf($"B3:B{rowIndex}")
            };

            sheetCF.AddConditionalFormatting(regions, rule);
        }
コード例 #12
0
        /**
         * Highlight multiple cells based on a formula
         */
        static void MultiCell(ISheet sheet)
        {
            // header row
            IRow row0 = sheet.CreateRow(0);

            row0.CreateCell(0).SetCellValue("Units");
            row0.CreateCell(1).SetCellValue("Cost");
            row0.CreateCell(2).SetCellValue("Total");

            IRow row1 = sheet.CreateRow(1);

            row1.CreateCell(0).SetCellValue(71);
            row1.CreateCell(1).SetCellValue(29);
            row1.CreateCell(2).SetCellValue(2059);

            IRow row2 = sheet.CreateRow(2);

            row2.CreateCell(0).SetCellValue(85);
            row2.CreateCell(1).SetCellValue(29);
            row2.CreateCell(2).SetCellValue(2059);

            IRow row3 = sheet.CreateRow(3);

            row3.CreateCell(0).SetCellValue(71);
            row3.CreateCell(1).SetCellValue(29);
            row3.CreateCell(2).SetCellValue(2059);

            ISheetConditionalFormatting sheetCF = sheet.SheetConditionalFormatting;

            // Condition 1: Formula Is   =$B2>75   (Blue Fill)
            IConditionalFormattingRule rule1 = sheetCF.CreateConditionalFormattingRule("$A2>75");
            IPatternFormatting         fill1 = rule1.CreatePatternFormatting();

            fill1.FillBackgroundColor = IndexedColors.Blue.Index;
            fill1.FillPattern         = FillPattern.SolidForeground;

            CellRangeAddress[] regions =
            {
                CellRangeAddress.ValueOf("A2:C4")
            };

            sheetCF.AddConditionalFormatting(regions, rule1);

            sheet.GetRow(2).CreateCell(4).SetCellValue("<== Condition 1: Formula is =$B2>75   (Blue Fill)");
        }
コード例 #13
0
        /**
         * You can use Excel conditional formatting to shade bands of rows on the worksheet.
         * In this example, 3 rows are shaded light grey, and 3 are left with no shading.
         * In the MOD function, the total number of rows in the set of banded rows (6) is entered.
         */
        static void ShadeBands(ISheet sheet)
        {
            ISheetConditionalFormatting sheetCF = sheet.SheetConditionalFormatting;

            IConditionalFormattingRule rule1 = sheetCF.CreateConditionalFormattingRule("MOD(ROW(),6)<3");
            IPatternFormatting         fill1 = rule1.CreatePatternFormatting();

            fill1.FillBackgroundColor = (IndexedColors.Grey25Percent.Index);
            fill1.FillPattern         = FillPattern.SolidForeground;

            CellRangeAddress[] regions =
            {
                CellRangeAddress.ValueOf("A1:Z100")
            };

            sheetCF.AddConditionalFormatting(regions, rule1);

            sheet.CreateRow(0).CreateCell(1).SetCellValue("Shade Bands of Rows");
            sheet.CreateRow(1).CreateCell(1).SetCellValue("Condition: Formula is  =MOD(ROW(),6)<2   (Light Grey Fill)");
        }
コード例 #14
0
        /**
         * Use Excel conditional formatting to shade alternating rows on the worksheet
         */
        static void ShadeAlt(ISheet sheet)
        {
            ISheetConditionalFormatting sheetCF = sheet.SheetConditionalFormatting;

            // Condition 1: Formula Is   =A2=A1   (White Font)
            IConditionalFormattingRule rule1 = sheetCF.CreateConditionalFormattingRule("MOD(ROW(),2)");
            IPatternFormatting         fill1 = rule1.CreatePatternFormatting();

            fill1.FillBackgroundColor = (IndexedColors.LightGreen.Index);
            fill1.FillPattern         = FillPattern.SolidForeground;

            CellRangeAddress[] regions =
            {
                CellRangeAddress.ValueOf("A1:Z100")
            };

            sheetCF.AddConditionalFormatting(regions, rule1);

            sheet.CreateRow(0).CreateCell(1).SetCellValue("Shade Alternating Rows");
            sheet.CreateRow(1).CreateCell(1).SetCellValue("Condition: Formula Is  =MOD(ROW(),2)   (Light Green Fill)");
        }
コード例 #15
0
        void MakePercentageConditionalFormattingRules()
        {
            IConditionalFormattingRule rule1 = sheet.SheetConditionalFormatting.CreateConditionalFormattingRule(ComparisonOperator.GreaterThanOrEqual, GreenBandString);
            IPatternFormatting         fill1 = rule1.CreatePatternFormatting();

            fill1.FillBackgroundColor = IndexedColors.BrightGreen.Index;
            fill1.FillPattern         = (short)FillPattern.SolidForeground;

            IConditionalFormattingRule rule2 = sheet.SheetConditionalFormatting.CreateConditionalFormattingRule(ComparisonOperator.GreaterThanOrEqual, YellowBandString);
            IPatternFormatting         fill2 = rule2.CreatePatternFormatting();

            fill2.FillBackgroundColor = IndexedColors.Yellow.Index;
            fill2.FillPattern         = (short)FillPattern.SolidForeground;

            IConditionalFormattingRule rule3 = sheet.SheetConditionalFormatting.CreateConditionalFormattingRule(ComparisonOperator.LessThan, YellowBandString);
            IPatternFormatting         fill3 = rule3.CreatePatternFormatting();

            fill3.FillBackgroundColor = IndexedColors.Red.Index;
            fill3.FillPattern         = (short)FillPattern.SolidForeground;

            PercentageFormattingRules = new IConditionalFormattingRule[] { rule1, rule2, rule3 };
        }
コード例 #16
0
        static void Main(string[] args)
        {
            InitializeWorkbook();

            HSSFSheet sheet1 = (HSSFSheet)hssfworkbook.CreateSheet("Sheet1");

            ISheetConditionalFormatting hscf = sheet1.SheetConditionalFormatting;


            // Define a Conditional Formatting rule, which triggers formatting
            // when cell's value is bigger than 55 and smaller than 500
            // applies patternFormatting defined below.
            IConditionalFormattingRule rule = hscf.CreateConditionalFormattingRule(
                ComparisonOperator.Between,
                "55", // 1st formula
                "500" // 2nd formula
                );

            // Create pattern with red background
            IPatternFormatting patternFmt = rule.CreatePatternFormatting();

            patternFmt.FillBackgroundColor = NPOI.HSSF.Util.HSSFColor.Red.Index;

            //// Define a region containing first column
            CellRangeAddress[] regions =
            {
                new CellRangeAddress(0, 65535, 0, 1)
            };
            // Apply Conditional Formatting rule defined above to the regions
            hscf.AddConditionalFormatting(regions, rule);

            //fill cell with numeric values
            sheet1.CreateRow(0).CreateCell(0).SetCellValue(50);
            sheet1.CreateRow(0).CreateCell(1).SetCellValue(101);
            sheet1.CreateRow(1).CreateCell(1).SetCellValue(25);
            sheet1.CreateRow(1).CreateCell(0).SetCellValue(150);

            WriteToFile();
        }
コード例 #17
0
        public void Write(string path, IProgress <string> progressHandler)
        {
            progressHandler.Report("Starting writing *.XLSX file...");
            progressHandler.Report("Path: " + path);

            using (var stream = new FileStream(path, FileMode.Create, FileAccess.Write))
            {
                IWorkbook workbook     = new XSSFWorkbook();
                ISheet    entriesSheet = workbook.CreateSheet("Entries");
                ISheet    metaSheet    = workbook.CreateSheet("MetaData");

                int metaRowIndex = 0;
                foreach (var meta in MetaData)
                {
                    IRow  metaRow  = metaSheet.CreateRow(metaRowIndex);
                    ICell metaCell = metaRow.CreateCell(0);

                    metaCell.SetCellValue(meta);

                    metaRowIndex++;
                }

                metaSheet.SetColumnWidth(0, 100 * 256);

                IFont titleFont = workbook.CreateFont();
                titleFont.IsBold             = true;
                titleFont.FontHeightInPoints = 12;

                ICellStyle titleStyle = workbook.CreateCellStyle();
                titleStyle.FillForegroundColor = HSSFColor.Grey25Percent.Index;
                titleStyle.FillPattern         = FillPattern.SolidForeground;
                titleStyle.BorderTop           = titleStyle.BorderLeft = titleStyle.BorderRight = titleStyle.BorderBottom = BorderStyle.Thin;
                titleStyle.SetFont(titleFont);

                ICellStyle valuesStyle = workbook.CreateCellStyle();
                valuesStyle.BorderTop         = valuesStyle.BorderLeft = valuesStyle.BorderRight = valuesStyle.BorderBottom = BorderStyle.Thin;
                valuesStyle.VerticalAlignment = VerticalAlignment.Center;
                valuesStyle.WrapText          = true;

                entriesSheet.DefaultColumnWidth       = 30;
                entriesSheet.DefaultRowHeightInPoints = 11 * 3;

                entriesSheet.SetColumnWidth(0, 50 * 256);
                entriesSheet.SetColumnWidth(1, 70 * 256);
                entriesSheet.SetColumnWidth(2, 70 * 256);

                entriesSheet.CreateFreezePane(0, 1);

                IRow titlesRow = entriesSheet.CreateRow(0);
                titlesRow.HeightInPoints = 20;

                ICell keyTitleCell                = titlesRow.CreateCell(0);
                ICell nativeTitleCell             = titlesRow.CreateCell(1);
                ICell translationTitleCell        = titlesRow.CreateCell(2);
                ICell translatorCommentsTitleCell = titlesRow.CreateCell(3);
                ICell flagsTitleCell              = titlesRow.CreateCell(4);
                ICell commentsTitleCell           = titlesRow.CreateCell(5);
                ICell referencesTitleCell         = titlesRow.CreateCell(6);

                foreach (var cell in titlesRow.Cells)
                {
                    cell.CellStyle = titleStyle;
                }

                keyTitleCell.SetCellValue("Key");
                nativeTitleCell.SetCellValue("Orginal");
                translationTitleCell.SetCellValue("Translation");
                translatorCommentsTitleCell.SetCellValue("Comments");
                flagsTitleCell.SetCellValue("Flags");
                commentsTitleCell.SetCellValue("Comments (generated)");
                referencesTitleCell.SetCellValue("References");

                int rowIndex = 1;
                foreach (var entry in Entries)
                {
                    IRow entryRow = entriesSheet.CreateRow(rowIndex);

                    ICell keyCell                = entryRow.CreateCell(0);
                    ICell nativeCell             = entryRow.CreateCell(1);
                    ICell translationCell        = entryRow.CreateCell(2);
                    ICell translatorCommentsCell = entryRow.CreateCell(3);
                    ICell flagsCell              = entryRow.CreateCell(4);
                    ICell commentsCell           = entryRow.CreateCell(5);
                    ICell referencesCell         = entryRow.CreateCell(6);

                    keyCell.SetCellValue(entry.msgctxt);
                    nativeCell.SetCellValue(entry.msgid);
                    translationCell.SetCellValue(entry.msgstr);
                    translatorCommentsCell.SetCellValue(GetMergedStringList(entry.translatorComments));
                    flagsCell.SetCellValue(GetMergedStringList(entry.flags));
                    commentsCell.SetCellValue(GetMergedStringList(entry.comments));
                    referencesCell.SetCellValue(GetMergedStringList(entry.references));


                    foreach (var cell in entryRow.Cells)
                    {
                        cell.CellStyle = valuesStyle;
                    }

                    rowIndex++;
                }

                IConditionalFormattingRule rule = entriesSheet.SheetConditionalFormatting.CreateConditionalFormattingRule(ComparisonOperator.Equal, "\"\"");
                IPatternFormatting         fill = rule.CreatePatternFormatting();
                fill.FillBackgroundColor = IndexedColors.Red.Index;
                fill.FillPattern         = FillPattern.SolidForeground;

                CellRangeAddress[] regions =
                {
                    new CellRangeAddress(1, Entries.Count, 2, 2)
                };

                entriesSheet.SheetConditionalFormatting.AddConditionalFormatting(regions, rule);

                workbook.Write(stream);
            }

            progressHandler.Report("File succesfuly created.");
        }
コード例 #18
0
        public void TestRead()
        {
            IWorkbook wb = _testDataProvider.OpenSampleWorkbook("WithConditionalFormatting.xls");
            ISheet    sh = wb.GetSheet("CF");
            ISheetConditionalFormatting sheetCF = sh.SheetConditionalFormatting;

            Assert.AreEqual(3, sheetCF.NumConditionalFormattings);

            IConditionalFormatting cf1 = sheetCF.GetConditionalFormattingAt(0);

            Assert.AreEqual(2, cf1.NumberOfRules);

            CellRangeAddress[] regions1 = cf1.GetFormattingRanges();
            Assert.AreEqual(1, regions1.Length);
            Assert.AreEqual("A1:A8", regions1[0].FormatAsString());

            // CF1 has two rules: values less than -3 are bold-italic red, values greater than 3 are green
            IConditionalFormattingRule rule1 = cf1.GetRule(0);

            Assert.AreEqual(ConditionType.CELL_VALUE_IS, rule1.ConditionType);
            Assert.AreEqual(ComparisonOperator.GT, rule1.ComparisonOperation);
            Assert.AreEqual("3", rule1.Formula1);
            Assert.IsNull(rule1.Formula2);
            // Fills and borders are not Set
            Assert.IsNull(rule1.GetPatternFormatting());
            Assert.IsNull(rule1.GetBorderFormatting());

            IFontFormatting fmt1 = rule1.GetFontFormatting();

            //        Assert.AreEqual(IndexedColors.GREEN.index, fmt1.FontColorIndex);
            Assert.IsTrue(fmt1.IsBold);
            Assert.IsFalse(fmt1.IsItalic);

            IConditionalFormattingRule rule2 = cf1.GetRule(1);

            Assert.AreEqual(ConditionType.CELL_VALUE_IS, rule2.ConditionType);
            Assert.AreEqual(ComparisonOperator.LT, rule2.ComparisonOperation);
            Assert.AreEqual("-3", rule2.Formula1);
            Assert.IsNull(rule2.Formula2);
            Assert.IsNull(rule2.GetPatternFormatting());
            Assert.IsNull(rule2.GetBorderFormatting());

            IFontFormatting fmt2 = rule2.GetFontFormatting();

            //        Assert.AreEqual(IndexedColors.RED.index, fmt2.FontColorIndex);
            Assert.IsTrue(fmt2.IsBold);
            Assert.IsTrue(fmt2.IsItalic);


            IConditionalFormatting cf2 = sheetCF.GetConditionalFormattingAt(1);

            Assert.AreEqual(1, cf2.NumberOfRules);
            CellRangeAddress[] regions2 = cf2.GetFormattingRanges();
            Assert.AreEqual(1, regions2.Length);
            Assert.AreEqual("B9", regions2[0].FormatAsString());

            IConditionalFormattingRule rule3 = cf2.GetRule(0);

            Assert.AreEqual(ConditionType.FORMULA, rule3.ConditionType);
            Assert.AreEqual(ComparisonOperator.NO_COMPARISON, rule3.ComparisonOperation);
            Assert.AreEqual("$A$8>5", rule3.Formula1);
            Assert.IsNull(rule3.Formula2);

            IFontFormatting fmt3 = rule3.GetFontFormatting();

            //        Assert.AreEqual(IndexedColors.RED.index, fmt3.FontColorIndex);
            Assert.IsTrue(fmt3.IsBold);
            Assert.IsTrue(fmt3.IsItalic);

            IPatternFormatting fmt4 = rule3.GetPatternFormatting();

            //        Assert.AreEqual(IndexedColors.LIGHT_CORNFLOWER_BLUE.index, fmt4.FillBackgroundColor);
            //        Assert.AreEqual(IndexedColors.AUTOMATIC.index, fmt4.FillForegroundColor);
            Assert.AreEqual(PatternFormatting.NO_Fill, fmt4.FillPattern);
            // borders are not Set
            Assert.IsNull(rule3.GetBorderFormatting());

            IConditionalFormatting cf3 = sheetCF.GetConditionalFormattingAt(2);

            CellRangeAddress[] regions3 = cf3.GetFormattingRanges();
            Assert.AreEqual(1, regions3.Length);
            Assert.AreEqual("B1:B7", regions3[0].FormatAsString());
            Assert.AreEqual(2, cf3.NumberOfRules);

            IConditionalFormattingRule rule4 = cf3.GetRule(0);

            Assert.AreEqual(ConditionType.CELL_VALUE_IS, rule4.ConditionType);
            Assert.AreEqual(ComparisonOperator.LE, rule4.ComparisonOperation);
            Assert.AreEqual("\"AAA\"", rule4.Formula1);
            Assert.IsNull(rule4.Formula2);

            IConditionalFormattingRule rule5 = cf3.GetRule(1);

            Assert.AreEqual(ConditionType.CELL_VALUE_IS, rule5.ConditionType);
            Assert.AreEqual(ComparisonOperator.BETWEEN, rule5.ComparisonOperation);
            Assert.AreEqual("\"A\"", rule5.Formula1);
            Assert.AreEqual("\"AAA\"", rule5.Formula2);
        }
コード例 #19
0
        //

        public void TestRead(string sampleFile)
        {
            IWorkbook wb = _testDataProvider.OpenSampleWorkbook(sampleFile);
            ISheet    sh = wb.GetSheet("CF");
            ISheetConditionalFormatting sheetCF = sh.SheetConditionalFormatting;

            Assert.AreEqual(3, sheetCF.NumConditionalFormattings);

            IConditionalFormatting cf1 = sheetCF.GetConditionalFormattingAt(0);

            Assert.AreEqual(2, cf1.NumberOfRules);

            CellRangeAddress[] regions1 = cf1.GetFormattingRanges();
            Assert.AreEqual(1, regions1.Length);
            Assert.AreEqual("A1:A8", regions1[0].FormatAsString());

            // CF1 has two rules: values less than -3 are bold-italic red, values greater than 3 are green
            IConditionalFormattingRule rule1 = cf1.GetRule(0);

            Assert.AreEqual(ConditionType.CellValueIs, rule1.ConditionType);
            Assert.AreEqual(ComparisonOperator.GreaterThan, rule1.ComparisonOperation);
            Assert.AreEqual("3", rule1.Formula1);
            Assert.IsNull(rule1.Formula2);
            // Fills and borders are not Set
            Assert.IsNull(rule1.GetPatternFormatting());
            Assert.IsNull(rule1.GetBorderFormatting());

            IFontFormatting fmt1 = rule1.GetFontFormatting();

            //        Assert.AreEqual(HSSFColor.GREEN.index, fmt1.FontColorIndex);
            Assert.IsTrue(fmt1.IsBold);
            Assert.IsFalse(fmt1.IsItalic);

            IConditionalFormattingRule rule2 = cf1.GetRule(1);

            Assert.AreEqual(ConditionType.CellValueIs, rule2.ConditionType);
            Assert.AreEqual(ComparisonOperator.LessThan, rule2.ComparisonOperation);
            Assert.AreEqual("-3", rule2.Formula1);
            Assert.IsNull(rule2.Formula2);
            Assert.IsNull(rule2.GetPatternFormatting());
            Assert.IsNull(rule2.GetBorderFormatting());

            IFontFormatting fmt2 = rule2.GetFontFormatting();

            //        Assert.AreEqual(HSSFColor.Red.index, fmt2.FontColorIndex);
            Assert.IsTrue(fmt2.IsBold);
            Assert.IsTrue(fmt2.IsItalic);


            IConditionalFormatting cf2 = sheetCF.GetConditionalFormattingAt(1);

            Assert.AreEqual(1, cf2.NumberOfRules);
            CellRangeAddress[] regions2 = cf2.GetFormattingRanges();
            Assert.AreEqual(1, regions2.Length);
            Assert.AreEqual("B9", regions2[0].FormatAsString());

            IConditionalFormattingRule rule3 = cf2.GetRule(0);

            Assert.AreEqual(ConditionType.Formula, rule3.ConditionType);
            Assert.AreEqual(ComparisonOperator.NoComparison, rule3.ComparisonOperation);
            Assert.AreEqual("$A$8>5", rule3.Formula1);
            Assert.IsNull(rule3.Formula2);

            IFontFormatting fmt3 = rule3.GetFontFormatting();

            //        Assert.AreEqual(HSSFColor.Red.index, fmt3.FontColorIndex);
            Assert.IsTrue(fmt3.IsBold);
            Assert.IsTrue(fmt3.IsItalic);

            IPatternFormatting fmt4 = rule3.GetPatternFormatting();

            //        Assert.AreEqual(HSSFColor.LIGHT_CORNFLOWER_BLUE.index, fmt4.FillBackgroundColor);
            //        Assert.AreEqual(HSSFColor.Automatic.index, fmt4.FillForegroundColor);
            Assert.AreEqual((short)FillPattern.NoFill, fmt4.FillPattern);
            // borders are not Set
            Assert.IsNull(rule3.GetBorderFormatting());

            IConditionalFormatting cf3 = sheetCF.GetConditionalFormattingAt(2);

            CellRangeAddress[] regions3 = cf3.GetFormattingRanges();
            Assert.AreEqual(1, regions3.Length);
            Assert.AreEqual("B1:B7", regions3[0].FormatAsString());
            Assert.AreEqual(2, cf3.NumberOfRules);

            IConditionalFormattingRule rule4 = cf3.GetRule(0);

            Assert.AreEqual(ConditionType.CellValueIs, rule4.ConditionType);
            Assert.AreEqual(ComparisonOperator.LessThanOrEqual, rule4.ComparisonOperation);
            Assert.AreEqual("\"AAA\"", rule4.Formula1);
            Assert.IsNull(rule4.Formula2);

            IConditionalFormattingRule rule5 = cf3.GetRule(1);

            Assert.AreEqual(ConditionType.CellValueIs, rule5.ConditionType);
            Assert.AreEqual(ComparisonOperator.Between, rule5.ComparisonOperation);
            Assert.AreEqual("\"A\"", rule5.Formula1);
            Assert.AreEqual("\"AAA\"", rule5.Formula2);
        }
コード例 #20
0
        public void test52122()
        {
            IWorkbook workbook = new HSSFWorkbook();
            ISheet    sheet    = workbook.CreateSheet("Conditional Formatting Test");

            sheet.SetColumnWidth(0, 256 * 10);
            sheet.SetColumnWidth(1, 256 * 10);
            sheet.SetColumnWidth(2, 256 * 10);
            // Create some content.
            // row 0
            IRow  row   = sheet.CreateRow(0);
            ICell cell0 = row.CreateCell(0);

            cell0.SetCellType(CellType.Numeric);
            cell0.SetCellValue(100);
            ICell cell1 = row.CreateCell(1);

            cell1.SetCellType(CellType.Numeric);
            cell1.SetCellValue(120);
            ICell cell2 = row.CreateCell(2);

            cell2.SetCellType(CellType.Numeric);
            cell2.SetCellValue(130);
            // row 1
            row   = sheet.CreateRow(1);
            cell0 = row.CreateCell(0);
            cell0.SetCellType(CellType.Numeric);
            cell0.SetCellValue(200);
            cell1 = row.CreateCell(1);
            cell1.SetCellType(CellType.Numeric);
            cell1.SetCellValue(220);
            cell2 = row.CreateCell(2);
            cell2.SetCellType(CellType.Numeric);
            cell2.SetCellValue(230);
            // row 2
            row   = sheet.CreateRow(2);
            cell0 = row.CreateCell(0);
            cell0.SetCellType(CellType.Numeric);
            cell0.SetCellValue(300);
            cell1 = row.CreateCell(1);
            cell1.SetCellType(CellType.Numeric);
            cell1.SetCellValue(320);
            cell2 = row.CreateCell(2);
            cell2.SetCellType(CellType.Numeric);
            cell2.SetCellValue(330);
            // Create conditional formatting, CELL1 should be yellow if CELL0 is not blank.
            ISheetConditionalFormatting formatting = sheet.SheetConditionalFormatting;
            IConditionalFormattingRule  rule       = formatting.CreateConditionalFormattingRule("$A$1>75");
            IPatternFormatting          pattern    = rule.CreatePatternFormatting();

            pattern.FillBackgroundColor = IndexedColors.Blue.Index;
            pattern.FillPattern         = FillPattern.SolidForeground;
            CellRangeAddress[] range  = { CellRangeAddress.ValueOf("B2:C2") };
            CellRangeAddress[] range2 = { CellRangeAddress.ValueOf("B1:C1") };
            formatting.AddConditionalFormatting(range, rule);
            formatting.AddConditionalFormatting(range2, rule);
            // Write file.

            /*FileOutputStream fos = new FileOutputStream("c:\\temp\\52122_conditional-sheet.xls");
             * try {
             *  workbook.write(fos);
             * } finally {
             *  fos.Close();
             * }*/
            IWorkbook wbBack    = HSSFTestDataSamples.WriteOutAndReadBack((HSSFWorkbook)workbook);
            ISheet    sheetBack = wbBack.GetSheetAt(0);
            ISheetConditionalFormatting sheetConditionalFormattingBack = sheetBack.SheetConditionalFormatting;

            Assert.IsNotNull(sheetConditionalFormattingBack);
            IConditionalFormatting formattingBack = sheetConditionalFormattingBack.GetConditionalFormattingAt(0);

            Assert.IsNotNull(formattingBack);
            IConditionalFormattingRule ruleBack = formattingBack.GetRule(0);

            Assert.IsNotNull(ruleBack);
            IPatternFormatting patternFormattingBack1 = ruleBack.PatternFormatting;

            Assert.IsNotNull(patternFormattingBack1);
            Assert.AreEqual(IndexedColors.Blue.Index, patternFormattingBack1.FillBackgroundColor);
            Assert.AreEqual(FillPattern.SolidForeground, patternFormattingBack1.FillPattern);
        }
コード例 #21
0
        public void TestCreateCF()
        {
            IWorkbook workbook = _testDataProvider.CreateWorkbook();
            ISheet    sheet    = workbook.CreateSheet();
            String    formula  = "7";

            ISheetConditionalFormatting sheetCF = sheet.SheetConditionalFormatting;

            IConditionalFormattingRule rule1   = sheetCF.CreateConditionalFormattingRule(formula);
            IFontFormatting            fontFmt = rule1.CreateFontFormatting();

            fontFmt.SetFontStyle(true, false);

            IBorderFormatting bordFmt = rule1.CreateBorderFormatting();

            bordFmt.BorderBottom = (/*setter*/ BorderStyle.Thin);
            bordFmt.BorderTop    = (/*setter*/ BorderStyle.Thick);
            bordFmt.BorderLeft   = (/*setter*/ BorderStyle.Dashed);
            bordFmt.BorderRight  = (/*setter*/ BorderStyle.Dotted);

            IPatternFormatting patternFmt = rule1.CreatePatternFormatting();

            patternFmt.FillBackgroundColor = (/*setter*/ HSSFColor.Yellow.Index);


            IConditionalFormattingRule rule2 = sheetCF.CreateConditionalFormattingRule(ComparisonOperator.Between, "1", "2");

            IConditionalFormattingRule[] cfRules =
            {
                rule1, rule2
            };

            short col = 1;

            CellRangeAddress[] regions =
            {
                new CellRangeAddress(0, 65535, col, col)
            };

            sheetCF.AddConditionalFormatting(regions, cfRules);
            sheetCF.AddConditionalFormatting(regions, cfRules);

            // Verification
            Assert.AreEqual(2, sheetCF.NumConditionalFormattings);
            sheetCF.RemoveConditionalFormatting(1);
            Assert.AreEqual(1, sheetCF.NumConditionalFormattings);
            IConditionalFormatting cf = sheetCF.GetConditionalFormattingAt(0);

            Assert.IsNotNull(cf);

            regions = cf.GetFormattingRanges();
            Assert.IsNotNull(regions);
            Assert.AreEqual(1, regions.Length);
            CellRangeAddress r = regions[0];

            Assert.AreEqual(1, r.FirstColumn);
            Assert.AreEqual(1, r.LastColumn);
            Assert.AreEqual(0, r.FirstRow);
            Assert.AreEqual(65535, r.LastRow);

            Assert.AreEqual(2, cf.NumberOfRules);

            rule1 = cf.GetRule(0);
            Assert.AreEqual("7", rule1.Formula1);
            Assert.IsNull(rule1.Formula2);

            IFontFormatting r1fp = rule1.GetFontFormatting();

            Assert.IsNotNull(r1fp);

            Assert.IsTrue(r1fp.IsItalic);
            Assert.IsFalse(r1fp.IsBold);

            IBorderFormatting r1bf = rule1.GetBorderFormatting();

            Assert.IsNotNull(r1bf);
            Assert.AreEqual(BorderStyle.Thin, r1bf.BorderBottom);
            Assert.AreEqual(BorderStyle.Thick, r1bf.BorderTop);
            Assert.AreEqual(BorderStyle.Dashed, r1bf.BorderLeft);
            Assert.AreEqual(BorderStyle.Dotted, r1bf.BorderRight);

            IPatternFormatting r1pf = rule1.GetPatternFormatting();

            Assert.IsNotNull(r1pf);
            //        Assert.AreEqual(HSSFColor.Yellow.index,r1pf.FillBackgroundColor);

            rule2 = cf.GetRule(1);
            Assert.AreEqual("2", rule2.Formula2);
            Assert.AreEqual("1", rule2.Formula1);
        }