예제 #1
0
        public CsvTable Deserialize(TextReader reader, CsvSettings settings)
        {
            if (reader == null)
            {
                throw new ArgumentNullException("reader");
            }

            if (settings == null)
            {
                throw new ArgumentNullException("settings");
            }

            CsvTable table = new CsvTable();

            table.Settings = settings;

            string allText = reader.ReadToEnd();

            string[] rows = allText.Split(Environment.NewLine.ToCharArray(), StringSplitOptions.RemoveEmptyEntries);

            System.Diagnostics.Debugger.Launch();
            if (settings.Header)
            {
                table.Header = ParseCsvRecord(rows[0], settings);
                rows         = rows.Skip(1).ToArray();
            }

            foreach (string row in rows)
            {
                table.Records.Add(ParseCsvRecord(row, settings));
            }

            return(table);
        }
예제 #2
0
        public void SaveTable(CsvTable table)
        {
            if (table == null)
            {
                throw new ArgumentNullException("table");
            }

            if (_serializer == null)
            {
                throw new Exception("Serializer cannot be null");
            }

            using (var tw = File.CreateText(table.Location.LocalPath))
            {
                _serializer.Serialize(tw, table);
            }
        }
예제 #3
0
        public void Serialize(TextWriter writer, CsvTable table)
        {
            if (writer == null)
            {
                throw new ArgumentNullException("writer");
            }

            if (table == null)
            {
                throw new ArgumentNullException("table");
            }

            if (table.Settings == null)
            {
                throw new Exception("CsvTable.Setting cannot be null");
            }

            StringBuilder sb = new StringBuilder();

            if (table.Settings.Header && table.Header != null)
            {
                foreach (var field in table.Header.Fields)
                {
                    sb.AppendFormat("{0}{1}", field.Value, table.Settings.Separator);
                }

                sb.Append(Environment.NewLine);
            }

            if (table.Records != null)
            {
                foreach (var record in table.Records)
                {
                    foreach (var field in record.Fields)
                    {
                        sb.AppendFormat("{0}{1}", field.Value, table.Settings.Separator);
                    }

                    sb.Append(Environment.NewLine);
                }
            }

            writer.Write(sb.ToString());
        }