Example #1
0
 private static void SetCellValues(Cell cell, ValueToInsert value)
 {
     if (value != null)
     {
         if (value.IsFormula)
         {
             cell.CellFormula               = new CellFormula();
             cell.CellFormula.Text          = value.Value.ToString();
             cell.CellFormula.CalculateCell = new BooleanValue(true);
             cell.DataType  = CellValues.String;
             cell.CellValue = new CellValue(string.Empty);
         }
         else if (value?.Type == typeof(int) || value?.Type == typeof(long))
         {
             cell.DataType  = CellValues.Number;
             cell.CellValue = new CellValue(value.Value?.ToString());
         }
         else if (value?.Type == typeof(int?) || value?.Type == typeof(long?))
         {
             cell.DataType  = CellValues.Number;
             cell.CellValue = new CellValue(value.Value != null
                     ? value.Value.ToString()
                     : String.Empty);
         }
         else if (value?.Type == typeof(decimal))
         {
             cell.DataType  = CellValues.Number;
             cell.CellValue = new CellValue(new DecimalValue((decimal)value.Value));
         }
         else if (value?.Type == typeof(decimal?))
         {
             cell.DataType = CellValues.Number;
             var nullableDecimalValue = (decimal?)value.Value;
             cell.CellValue = new CellValue(nullableDecimalValue != null
                 ? new DecimalValue(nullableDecimalValue.Value)
                 : new DecimalValue());
         }
         else if (value?.Type == typeof(DateTime))
         {
             cell.DataType = new EnumValue <CellValues>(CellValues.Number);
             var dateTimeValue = (DateTime)value.Value;
             cell.CellValue = new CellValue(dateTimeValue.ToOADate().ToString().Replace(',', '.'));
         }
         else if (value?.Type == typeof(DateTime?))
         {
             // этот вариант тоже рабочий
             cell.DataType = new EnumValue <CellValues>(CellValues.Number);
             var dateTimeValue = (DateTime?)value.Value;
             cell.CellValue = new CellValue(dateTimeValue.HasValue
                 ? dateTimeValue.Value.ToOADate().ToString().Replace(',', '.')
                 : string.Empty);
         }
         else
         {
             cell.DataType  = CellValues.String;
             cell.CellValue = new CellValue(value.Value?.ToString());
         }
     }
 }
Example #2
0
        private static void GenerateTemplate(WorkbookPart workbookPart, string sheetId, List <ColumnBlockToInsert> columnsBlockToInsert)
        {
            var worksheetPart  = (WorksheetPart)workbookPart.GetPartById(sheetId);
            var lastColumnName = "A";

            foreach (var columnBlockToInsert in columnsBlockToInsert)
            {
                var startColumnIndex = CellHelper.GetColumnIndex(columnBlockToInsert.FirstColumnName);
                for (int i = 0; i < columnBlockToInsert.ColumnsWidths.Length; i++)
                {
                    AddColumns(worksheetPart.Worksheet, startColumnIndex + i, columnBlockToInsert.ColumnsWidths[i]);
                }
                foreach (var blockToInsert in columnBlockToInsert.RowBlocksToInsert)
                {
                    var fromIndex = 0;
                    foreach (var cellToInsert in blockToInsert.CellsToInsert)
                    {
                        var column1Name    = CellHelper.ColumnIndexToColumnLetter(startColumnIndex + fromIndex);
                        var row1Index      = blockToInsert.RowId;
                        var cell1Reference = new CellReference($"{column1Name}{row1Index}");

                        var column2Name    = CellHelper.ColumnIndexToColumnLetter(startColumnIndex + fromIndex + cellToInsert.RowSize - 1);
                        var row2Index      = blockToInsert.RowId;
                        var cell2Reference = new CellReference($"{column2Name}{row2Index}");
                        lastColumnName = column2Name;

                        if (cellToInsert.RowSize > 1)
                        {
                            MergeCellHelper.MergeTwoCells(worksheetPart.Worksheet, cell1Reference.Reference, cell2Reference.Reference);
                        }
                        else
                        {
                            CellHelper.CreateSpreadsheetCellIfNotExist(worksheetPart.Worksheet, cell1Reference.Reference);
                        }

                        if (!string.IsNullOrEmpty(cellToInsert.FieldName))
                        {
                            var valueToInsert = new ValueToInsert
                            {
                                FieldName = null,
                                IsFormula = false,
                                Type      = typeof(string),
                                Value     = cellToInsert.FieldName,
                            };
                            SetCellValues(worksheetPart.Worksheet, column1Name, blockToInsert.RowId, valueToInsert);
                        }

                        CellHelper.CopyCellStyle(worksheetPart.Worksheet,
                                                 new CellReference(cellToInsert.StyleCellReference).ColumnName,
                                                 new CellReference(cellToInsert.StyleCellReference).RowIndex,
                                                 column1Name, row1Index);
                        fromIndex++;
                    }
                }
            }
            MergeCellHelper.MergeTwoCells(worksheetPart.Worksheet, "B3", $"{lastColumnName}3");
        }
Example #3
0
        private static void SetCellValues(Worksheet worksheet, string columnName, int rowId, ValueToInsert value)
        {
            var cell = CellHelper.GetCell(worksheet, columnName, rowId);

            SetCellValues(cell, value);
        }