public void Serialise(Type itemType, object value, XlsxDocumentBuilder document)
        {
            // Can't convert IEnumerable<primitive> to IEnumerable<object>
            var values = (IEnumerable)value;

            foreach (var val in values)
            {
                document.AppendRow(new object[] { val });
            }
        }
Esempio n. 2
0
        public void Serialise(Type itemType, object value, XlsxDocumentBuilder document)
        {
            // Can't convert IEnumerable<primitive> to IEnumerable<object>
            var values = (IEnumerable)value;

            foreach (var val in values)
            {
                document.AppendRow(new object[] { val });
            }
        }
Esempio n. 3
0
        public virtual void Serialise(Type itemType, object value, XlsxDocumentBuilder document)
        {
            var data       = value as IEnumerable <object>;
            var columnInfo = Resolver.GetExcelColumnInfo(itemType, data);

            if (columnInfo.Count == 0)
            {
                return;
            }

            var columns = columnInfo.Keys.ToList();

            // Add header row
            document.AppendRow((from col in columnInfo select col.Header).ToList());

            // Output each row of data
            if (data != null)
            {
                foreach (var dataObject in data)
                {
                    var row = new List <object>();

                    for (int i = 0; i <= columns.Count - 1; i++)
                    {
                        var cellValue = GetFieldOrPropertyValue(dataObject, columns[i]);
                        var info      = columnInfo[i];

                        row.Add(FormatCellValue(cellValue, info));
                    }

                    document.AppendRow(row.ToList());
                }
            }

            // Enforce any attributes on columns.
            for (int i = 1; i <= columns.Count; i++)
            {
                if (!string.IsNullOrEmpty(columnInfo[i - 1].ExcelNumberFormat))
                {
                    document.FormatColumn(i, columnInfo[i - 1].ExcelNumberFormat);
                }
            }
        }
        public virtual void Serialise(Type itemType, object value, XlsxDocumentBuilder document)
        {
            var data = value as IEnumerable<object>;
            var columnInfo = Resolver.GetExcelColumnInfo(itemType, data);

            if (columnInfo.Count == 0) return;

            var columns = columnInfo.Keys.ToList();

            // Add header row
            document.AppendRow((from col in columnInfo select col.Header).ToList());

            // Output each row of data
            if (data != null && data.FirstOrDefault() != null)
            {
                foreach (var dataObject in data)
                {
                    var row = new List<object>();

                    for (int i = 0; i <= columns.Count - 1; i++)
                    {
                        var cellValue = GetFieldOrPropertyValue(dataObject, columns[i]);
                        var info = columnInfo[i];

                        row.Add(FormatCellValue(cellValue, info));
                    }

                    document.AppendRow(row.ToArray());
                }
            }
            

            // Enforce any attributes on columns.
            for (int i = 1; i <= columns.Count; i++)
            {
                if (!string.IsNullOrEmpty(columnInfo[i - 1].ExcelNumberFormat))
                {
                    document.FormatColumn(i, columnInfo[i - 1].ExcelNumberFormat);
                }
            }
        }
Esempio n. 5
0
        public void Serialise(Type itemType, object value, XlsxDocumentBuilder document)
        {
            if (value.GetType().IsAssignableFrom(typeof(ExpandoObject)))
            {
                value = new[] { value };
            }

            var data  = value as IEnumerable <object>;
            var first = data.FirstOrDefault();

            if (first == null)
            {
                return;
            }

            var members = GetDynamicMembers(first);

            if (members.Count() == 0)
            {
                return;
            }

            // Add member names as headers.
            document.AppendRow(members);

            foreach (var item in data)
            {
                var propertyValues = GetDynamicPropertyValues(item);
                var row            = new List <object>();

                foreach (var member in members)
                {
                    row.Add(propertyValues[member]);
                }

                document.AppendRow(row);
            }
        }