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); }
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)); }
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)); }
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); } }