Ejemplo n.º 1
0
        /// <summary>
        /// Save data file as a CSV
        /// </summary>
        /// <param name="sheet"></param>
        /// <param name="language"></param>
        /// <param name="path"></param>
        public static void SaveAsCsv(Ex.Relational.IRelationalSheet sheet, Language language, string path)
        {
            using (var s = new StreamWriter(path, false, Encoding.UTF8))
            {
                var indexLine = new StringBuilder("key");
                var nameLine  = new StringBuilder("#");
                var typeLine  = new StringBuilder("int32");

                var colIndices = new List <int>();
                foreach (var col in sheet.Header.Columns)
                {
                    indexLine.AppendFormat(",{0}", col.Index);
                    nameLine.AppendFormat(",{0}", col.Name);
                    typeLine.AppendFormat(",{0}", col.ValueType);

                    colIndices.Add(col.Index);
                }

                s.WriteLine(indexLine);
                s.WriteLine(nameLine);
                s.WriteLine(typeLine);

                ExdHelper.WriteRows(s, sheet, language, colIndices, true);
            }
        }
Ejemplo n.º 2
0
        public static void SaveAsCsv(Ex.Relational.IRelationalSheet sheet, string path)
        {
            using (var s = new StreamWriter(path, false, Encoding.UTF8)) {
                var indexLine = new StringBuilder("key");
                var nameLine  = new StringBuilder("#");
                var typeLine  = new StringBuilder("int32");

                var colIndices = new List <int>();
                foreach (var col in sheet.Header.Columns)
                {
                    indexLine.AppendFormat(",{0}", col.Index);
                    nameLine.AppendFormat(",{0}", col.Name);
                    typeLine.AppendFormat(",{0}", col.ValueType);

                    colIndices.Add(col.Index);
                }

                s.WriteLine(indexLine);
                s.WriteLine(nameLine);
                s.WriteLine(typeLine);

                foreach (var row in sheet.Cast <Ex.IRow>().OrderBy(_ => _.Key))
                {
                    s.Write(row.Key);
                    foreach (var col in colIndices)
                    {
                        var v = row[col];

                        if (v == null)
                        {
                            s.Write(",");
                        }
                        else if (IsUnescaped(v))
                        {
                            s.Write(",{0}", v);
                        }
                        else
                        {
                            s.Write(",\"{0}\"", v.ToString().Replace("\"", "\"\""));
                        }
                    }
                    s.WriteLine();

                    s.Flush();
                }
            }
        }
Ejemplo n.º 3
0
        public static void SaveAsCsv(Ex.Relational.IRelationalSheet sheet, Language language, string path)
        {
            using (var s = new StreamWriter(path, false, Encoding.UTF8)) {
                var indexLine = new StringBuilder("key");
                var nameLine  = new StringBuilder("#");
                var typeLine  = new StringBuilder("int32");

                var colIndices = new List <int>();
                foreach (var col in sheet.Header.Columns)
                {
                    indexLine.AppendFormat(",{0}", col.Index);
                    nameLine.AppendFormat(",{0}", col.Name);
                    typeLine.AppendFormat(",{0}", col.ValueType);

                    colIndices.Add(col.Index);
                }

                s.WriteLine(indexLine);
                s.WriteLine(nameLine);
                s.WriteLine(typeLine);

                foreach (var row in sheet.Cast <Ex.IRow>().OrderBy(_ => _.Key))
                {
                    var useRow = row;

                    if (useRow is IXivRow)
                    {
                        useRow = ((IXivRow)row).SourceRow;
                    }
                    var multiRow = useRow as IMultiRow;

                    s.Write(useRow.Key);
                    foreach (var col in colIndices)
                    {
                        object v;

                        if (language == Language.None || multiRow == null)
                        {
                            v = useRow[col];
                        }
                        else
                        {
                            v = multiRow[col, language];
                        }

                        if (v == null)
                        {
                            s.Write(",");
                        }
                        else if (IsUnescaped(v))
                        {
                            s.Write(",{0}", v);
                        }
                        else
                        {
                            s.Write(",\"{0}\"", v.ToString().Replace("\"", "\"\""));
                        }
                    }
                    s.WriteLine();

                    s.Flush();
                }
            }
        }