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(@" ]"); }
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 ? "}" : "]"); }
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])); } }
protected abstract void FormatData(ExcelDataSheet sheet, StringBuilder target);