Esempio n. 1
0
        public void SetCellBackgroundColor(Int32 rowIndex, Int32 columnIndex, String bgColor)
        {
            // ищем ячейку и её старый формат
            Row         row                = GetRow((UInt32)rowIndex);
            Cell        cell               = GetCell(row, (UInt32)columnIndex);
            CellFormats cellFormats        = stylesheet.GetFirstChild <CellFormats>();
            CellFormat  cellFormat         = cellFormats.Elements <CellFormat>().ElementAt <CellFormat>((Int32)cell.StyleIndex.Value);
            Int32       newCellFormatIndex = cellFormats.Elements <CellFormat>().Count <CellFormat>();
            CellFormat  newCellFormat      = (CellFormat)cellFormat.Clone();

            {
                // новый background ----------------------------------------- проверить существующий to do ...
                Fills fills     = stylesheet.GetFirstChild <Fills>();
                Int32 fillIndex = fills.Elements <Fill>().Count <Fill>();
                fills.Append(
                    new Fill
                {
                    PatternFill = new PatternFill
                    {
                        PatternType     = PatternValues.Solid,
                        ForegroundColor = new ForegroundColor()
                        {
                            Rgb = "ff" + bgColor
                        }
                    }
                }
                    );
                newCellFormat.FillId = (UInt32)fillIndex;
            }
            cellFormats.Append(newCellFormat);
            cell.StyleIndex = (UInt32)newCellFormatIndex;
        }
Esempio n. 2
0
        private string GetFormatedValue(CellType cell, CellFormat cellformat)
        {
            string value;


            if (cellformat.NumberFormatId != 0)
            {
                WorkbookPart p       = GetWorkbookPartFromCell(cell);
                CellFormats  formats = p.WorkbookStylesPart.Stylesheet.CellFormats;

                /*
                 * var numberFormatId = cellFormat.NumberFormatId.Value;
                 * var numberingFormat = numberingFormats.Cast<NumberingFormat>()
                 *  .SingleOrDefault(f => f.NumberFormatId.Value == numberFormatId);
                 *
                 * // Here's yer string! Example: $#,##0.00_);[Red]($#,##0.00)
                 * if (numberingFormat != null && numberingFormat.FormatCode.Value.Contains("mm/dd/yy"))
                 * {
                 *  string formatString = numberingFormat.FormatCode.Value;
                 *  isDate = true;
                 * }
                 */

                string format = formats.Elements <NumberingFormat>()
                                .Where(i => i.NumberFormatId.Value == cellformat.NumberFormatId.Value)
                                .First().FormatCode;
                double number = double.Parse(cell.InnerText);
                value = number.ToString(format);
            }
            else
            {
                value = cell.InnerText;
            }
            return(value);
        }
        /// <summary>
        /// Вставить стиль ячейки используя класс CellFormat
        /// </summary>
        /// <param name="cellFormats">Таблица форматов ячеек</param>
        /// <param name="format">Объект формата ячейки, содержащии информицию о стиле ячейки.</param>
        /// <returns>ID вставленнго формата ячейки в структуре документа.</returns>
        public static uint CellFormat(this CellFormats cellFormats, CellFormat format)
        {
            var formatIndex = cellFormats.MakeSame(format);

            cellFormats.Count = (uint)cellFormats.Elements().Count();
            return(formatIndex);
        }
 /// <summary>
 /// Получть стиль ячейки по его ID
 /// </summary>
 /// <param name="cellFormats">Таблица форматов ячеек</param>
 /// <param name="formatIndex">ID формата ячейки</param>
 /// <returns>Возвращает объект стиля ячейки</returns>
 public static CellFormat CellFormat(this CellFormats cellFormats, int formatIndex)
 {
     return(cellFormats.Elements <CellFormat>().ElementAt(formatIndex));
 }