コード例 #1
0
        public static string ToCsv(this DataTable dataTable, CsvSetting csvSetting)
        {
            if (dataTable.Rows.Count <= 0)
            {
                return("");
            }

            var stRes = "";

            if (csvSetting.ShowHeader)
            {
                for (var i = 0; i < dataTable.Columns.Count; i++)
                {
                    stRes += string.Format("{0}{1}", dataTable.Columns[i].ColumnName,
                                           (i + 1 == dataTable.Columns.Count ? "" : csvSetting.Delimiter));
                }
            }

            stRes += stRes.IsNullOrEmpty() ? "" : Environment.NewLine;

            for (var i = 0; i < dataTable.Rows.Count; i++)
            {
                for (var j = 0; j < dataTable.Columns.Count; j++)
                {
                    stRes += dataTable.Rows[i][j] +
                             (1 + j == dataTable.Columns.Count ? Environment.NewLine : csvSetting.Delimiter);
                }
            }

            return(stRes);
        }
コード例 #2
0
        public void ExAndImportCsv()
        {
            // arrange
            var key     = Constants.Csv.Key;
            var name    = $"test-csv.{Constants.Csv.Extension}";
            var setting = new CsvSetting {
                Location = _path, Name = name, HasHeader = true
            };

            setting.CustomHeader = "#my custom line 1 \r\n#my custom line 2";
            setting.DataPosition = 3;

            var table = new DataTable("test-table");

            table.Columns.AddRange(new DataColumn[]
            {
                new DataColumn("col_1"),
                new DataColumn("col_2"),
                new DataColumn("col_3")
            });

            var rand = new Random();

            for (int i = 0; i < 10; i++)
            {
                table.Rows.Add(new object[] {
                    rand.Next(0, 10),
                    rand.Next(10, 100),
                    rand.NextDouble()
                });
            }

            // act export
            var result = _io.Exporter(key)
                         .Setup(setting)
                         .Build(table)
                         .Export();

            // assert export
            Assert.IsNotNull(result, $"{key} export failed");
            setting.CustomHeader = "";

            // act import
            DataTable importedTable = _io.Importer(key)
                                      .Setup(setting)
                                      .Import().AsItIs() as DataTable;

            // assert import
            for (int i = 0; i < importedTable.Rows.Count; i++)
            {
                for (int j = 0; j < importedTable.Columns.Count; j++)
                {
                    Assert.AreEqual(
                        importedTable.Rows[i].ItemArray[j],
                        table.Rows[i].ItemArray[j],
                        $"row index {i} at item {j} failed");
                }
            }
        }
コード例 #3
0
ファイル: CsvImporter.cs プロジェクト: peeyalk/Sin.Net
        // -- constructor

        public CsvImporter()
        {
            _setting = new CsvSetting
            {
                Separator = ';',
                HasHeader = true
            };
        }
コード例 #4
0
ファイル: CsvImporter.cs プロジェクト: peeyalk/Sin.Net
        // -- methods

        public IImportable Setup(SettingsBase setting)
        {
            if (setting is CsvSetting)
            {
                _setting = setting as CsvSetting;
            }
            else
            {
                Log.Error("The csv import setting has the wrong type and was not accepted.");
            }
            return(this);
        }