Exemplo n.º 1
0
        public static void ToCSV(string path, string[,] data)
        {
            System.Data.DataTable dt = new System.Data.DataTable();

            int row    = data.GetLength(0);
            int column = data.GetLength(1);

            for (int j = 0; j < column; j++)
            {
                dt.Columns.Add(data[0, j], typeof(String));
            }

            for (int i = 0; i < row; i++)   //含表头
            {
                dt.Rows.Add(dt.NewRow());
                for (int j = 0; j < column; j++)
                {
                    if (!String.IsNullOrEmpty(data[i, j]))
                    {
                        dt.Rows[i][j] = "\"" + data[i, j].Replace("\"", "\"\"") + "\"";
                    }
                }
            }
            dt.AcceptChanges();

            CsvOptions options = new CsvOptions("String[,]", ',', data.GetLength(1));

            CsvEngine.DataTableToCsv(dt, path, options);
        }
Exemplo n.º 2
0
        public void GivenDataTableWithColumns_WhenHeaderExportOptionIsOn_ThenHeaderIsInFile()
        {
            DataTable presidents = TwoPresidents();

            var optionsWithHeader = new CsvOptions("Temp", ',', 2)
            {
                IncludeHeaderNames = true
            };

            string path = TestCommon.GetPath("Good", "presidents.txt");

            CsvEngine.DataTableToCsv(presidents, path, optionsWithHeader);

            string[] lines = File.ReadAllLines(path);
            Assert.That(lines.Length, Is.EqualTo(3));
        }
Exemplo n.º 3
0
        public void GivenFileWithHeader_WhenImportingWithExportHeaders_ThenImportWillSkipFirstLine()
        {
            // Arrange
            DataTable presidents        = TwoPresidents();
            var       optionsWithHeader = new CsvOptions("Temp", ',', 2)
            {
                IncludeHeaderNames = true
            };
            string path = TestCommon.GetPath("Good", "presidents.txt");

            CsvEngine.DataTableToCsv(presidents, path, optionsWithHeader);

            // Act
            DataTable freshPresidents = CsvEngine.CsvToDataTable(path, optionsWithHeader);

            // Assert
            Assert.That(freshPresidents.Columns.Count, Is.EqualTo(2));
        }
Exemplo n.º 4
0
    static public void Export(this DataTable table, string filePath, NullSafeOfStringDictionary <DataExportTarget> targets)
    {
        string extension = Path.GetExtension(filePath);
        var    selected  = targets.First(p => p.Value == extension).Key;

        switch (selected)
        {
        case DataExportTarget.TXT:
            using (var stream = File.CreateText(filePath))
                foreach (DataRow row in table.Rows)
                {
                    foreach (DataColumn column in table.Columns)
                    {
                        stream.WriteLine($"{column.ColumnName} = {row[column]}");
                    }
                    stream.WriteLine();
                }
            break;

        case DataExportTarget.CSV:
            var options = new CsvOptions("String[,]", Globals.CSVSeparator, table.Rows.Count)
            {
                IncludeHeaderNames = true,
                DateFormat         = "yyyy-MM-dd HH:mm",
                Encoding           = Encoding.UTF8
            };
            CsvEngine.DataTableToCsv(table, filePath, options);
            break;

        case DataExportTarget.JSON:
            var dataset = new DataSet(Globals.AssemblyTitle);
            dataset.Tables.Add(table);
            string lines = JsonConvert.SerializeObject(dataset, Formatting.Indented);
            File.WriteAllText(filePath, lines, Encoding.UTF8);
            dataset.Tables.Clear();
            dataset.Dispose();
            break;

        default:
            throw new AdvNotImplementedException(selected);
        }
    }