protected override void FormatArrayData(ExcelDataSheet sheet, StringBuilder target)
        {
            target.AppendFormat("    {0}: [", sheet.Name);

            for (var i = 0; i < sheet.Data.Count; i++)
            {
                target.AppendFormat(@"""{0}""", sheet.Data[i][0]);
                if (i < sheet.Data.Count - 1)
                {
                    target.Append(", ");
                }
            }

            target.Append(@" ]");
        }
Example #2
0
        public void op_GetEnumerator()
        {
            using (var temp = new TempDirectory())
            {
                var file = temp.Info.ToFile("{0}.xlsx".FormatWith(AlphaDecimal.Random()));
                new DirectoryInfo(Environment.CurrentDirectory).ToFile("Default.xlsx").CopyTo(file.FullName);

                for (var i = 1; i < 4; i++)
                {
                    var sheet = new ExcelDataSheet(file)
                                    {
                                        Title = "Sheet" + XmlConvert.ToString(i)
                                    };
                    Assert.Empty(sheet);
                }
            }
        }
        protected override void FormatData(ExcelDataSheet sheet, StringBuilder target)
        {
            target.AppendFormatLine("    {0}: {{", sheet.Name);

            bool hasIdColumn = sheet.Columns.Any(x => x.Equals(IdFieldKey));

            for (var i = 0; i < sheet.Data.Count; i++)
            {
                string id = sheet.Data[i][0];

                if (sheet.Columns.Count == 1)
                {
                    target.AppendFormat(
                        "{0}\"{1}\": {{{2}: {1}}}",
                        DataDelimiter,
                        sheet.Data[i][0],
                        sheet.Columns[0]);
                }
                else
                {
                    // Write the key for the data
                    target.AppendFormatLine("{0}\"{1}\": {{", DataDelimiter, id.Trim('"'));

                    // Auto-add the ID field if we don't have it and assign it the default value
                    //  Note: This is mostly for easier access in Javascript projects
                    if (!hasIdColumn)
                    {
                        target.AppendFormatLine("{0}    {1}: {2},", DataDelimiter, IdFieldKey, id);
                    }

                    for (var n = 0; n < sheet.Columns.Count; n++)
                    {
                        // Ignore null values
                        if (string.IsNullOrEmpty(sheet.Data[i][n]))
                        {
                            continue;
                        }

                        target.AppendFormat("{0}    {1}: {2}", DataDelimiter, sheet.Columns[n], sheet.Data[i][n]);
                        if (n < sheet.Columns.Count - 1)
                        {
                            target.AppendLine(",");
                        }
                        else
                        {
                            target.AppendLine();
                        }
                    }

                    target.AppendFormat("{0}}}", DataDelimiter);
                }

                if (i < sheet.Data.Count - 1)
                {
                    target.AppendLine(",");
                }
                else
                {
                    target.AppendLine();
                }
            }

            target.Append(@"    }");
        }
        protected override void FormatData(ExcelDataSheet sheet, StringBuilder target)
        {
            bool isSingleEntry = sheet.Data.Count == 1;

            target.AppendFormatLine("    {0}: {1}", sheet.Name, isSingleEntry ? "{" : "[");

            for (var i = 0; i < sheet.Data.Count; i++)
            {
                if (sheet.Columns.Count == 1)
                {
                    target.AppendFormat(
                        "{0}\"{1}\": {{{2}: {1}}}",
                        DataDelimiter,
                        sheet.Data[i][0],
                        sheet.Columns[0]);
                }
                else
                {
                    // Write the key for the data
                    if (!isSingleEntry)
                    {
                        target.AppendFormatLine("{0}{{", DataDelimiter);
                    }

                    for (var n = 0; n < sheet.Columns.Count; n++)
                    {
                        // Ignore null values
                        if (string.IsNullOrEmpty(sheet.Data[i][n]))
                        {
                            continue;
                        }

                        target.AppendFormat("{0}    {1}: {2}", DataDelimiter, sheet.Columns[n], sheet.Data[i][n]);
                        if (n < sheet.Columns.Count - 1)
                        {
                            target.AppendLine(",");
                        }
                        else
                        {
                            target.AppendLine();
                        }
                    }

                    if (!isSingleEntry)
                    {
                        target.AppendFormat("{0}}}", DataDelimiter);

                        if (i < sheet.Data.Count - 1)
                        {
                            target.AppendLine(",");
                        }
                        else
                        {
                            target.AppendLine();
                        }
                    }
                }
            }

            target.AppendFormat("    {0}", isSingleEntry ? "}" : "]");
        }
Example #5
0
        public void op_GetEnumerator_whenSheet1()
        {
            using (var temp = new TempDirectory())
            {
                var file = temp.Info.ToFile("{0}.xlsx".FormatWith(AlphaDecimal.Random()));
                new DirectoryInfo(Environment.CurrentDirectory).ToFile("Example.xlsx").CopyTo(file.FullName);

                var sheet = new ExcelDataSheet(file)
                                {
                                    Title = "Sheet1"
                                };

                var data = sheet.ToList();
                Assert.Equal(3, data.Count);

                Assert.Equal("Top Left,123,123.45,true", Csv.Line(data[0]));
                Assert.Equal("1969-03-10,456%,£456.78,", Csv.Line(data[1]));
                Assert.Equal("1969-03-10T01:02:03Z,,,false", Csv.Line(data[2]));
            }
        }
Example #6
0
 protected abstract void FormatData(ExcelDataSheet sheet, StringBuilder target);