public static string WriteCsvFile3() { Console.WriteLine("Running WriteCsvFile3"); var i = 1; var path = Common.GetFileName(Common.CSV_TYPE); var writer = new CsvWriter(); //writes the csv file, mapping all of the columns / data var map = new CsvColumnInfoList <Company> { { "Id", obj => i++ }, { "Company Id", obj => obj.CompanyId }, { "Legal Name", obj => obj.LegalName, '"' }, //set a quoted identifier on this field only { "DBA Name", obj => obj.DBAName, '"' }, //set a quoted identifier on this field only { "Change Date", obj => obj.ChangeDate } }; using (var conn = new SqlConnection(ConfigurationManager.ConnectionStrings["DataModel"].ConnectionString)) { conn.Open(); using (var cmd = conn.CreateCommand()) { cmd.CommandText = "Select top (10000) * from Company"; cmd.CommandType = CommandType.Text; using (var reader = cmd.ExecuteReader()) { writer.WriteData(path, reader, map); } } } return(path); }
/// <summary> /// Writes the data to a csv file. /// </summary> /// <typeparam name="T"></typeparam> /// <param name="destinationPath">The destination path.</param> /// <param name="data">The data.</param> /// <param name="columnInfoList">The column information list.</param> /// <param name="writeHeaders">if set to <c>true</c> [write headers].</param> /// <exception cref="System.ArgumentNullException"> /// data /// or /// columnInfoList /// </exception> public virtual void WriteData <T>(string destinationPath, IDataReader data, CsvColumnInfoList <T> columnInfoList, bool writeHeaders = true) { if (data == null) { throw new ArgumentNullException("data"); } var dataList = FileIOHelpers.GetEnumerableFromReader <T>(data); this.WriteData <T>(destinationPath, dataList, columnInfoList, writeHeaders); }
public void WriteCSVTestWithTypeWithMapsNoQuote() { CsvColumnInfoList <Employee> columnInfoList = new CsvColumnInfoList <Employee>(); //IList<ICsvColumnInfo<Employee>> columnInfoList = new List<ICsvColumnInfo<Employee>>(); columnInfoList.Add("SSN", obj => obj.L2SSN); columnInfoList.Add("Name", obj => obj.L1Name, '"'); //set a quoted identifier on this field only columnInfoList.Add("Hire Date", obj => obj.HireDate.ToShortDateString()); columnInfoList.Add("Hourly Rate", obj => obj.HourlyRate); CsvWriter writer = new CsvWriter(); writer.WriteData(_destinationPath, Employee.GetTestEmployees(_employeesCount), columnInfoList); Assert.IsTrue(File.Exists(_destinationPath)); }
public static string WriteCsvFile2(IEnumerable <Company> companies) { Console.WriteLine("Running WriteCsvFile2"); var i = 1; var path = Common.GetFileName(Common.CSV_TYPE); //writes the csv file, mapping all of the columns / data var map = new CsvColumnInfoList <Company> { { "Id", obj => i++ }, { "Company Id", obj => obj.CompanyId }, { "Legal Name", obj => obj.LegalName, '"' }, //set a quoted identifier on this field only { "DBA Name", obj => obj.DBAName, '"' }, //set a quoted identifier on this field only { "Change Date", obj => obj.ChangeDate } }; CsvWriter writer = new CsvWriter(); writer.WriteData(path, companies, map); return(path); }
/// <summary> /// Writes the data to a csv file. /// </summary> /// <typeparam name="T"></typeparam> /// <param name="destinationPath">The destination path.</param> /// <param name="data">The data.</param> /// <param name="columnInfoList">The column information list.</param> /// <param name="writeHeaders">if set to <c>true</c> [write headers].</param> /// <exception cref="System.ArgumentNullException"> /// data /// or /// columnInfoList /// </exception> public virtual void WriteData <T>(string destinationPath, IEnumerable <T> data, CsvColumnInfoList <T> columnInfoList, bool writeHeaders = true) { if (data == null) { throw new ArgumentNullException("data"); } if (columnInfoList == null) { throw new ArgumentNullException("columnInfoList"); } Directory.CreateDirectory(Path.GetDirectoryName(destinationPath)); bool isFirstItem = true; string format = null; using (StreamWriter stream = File.CreateText(destinationPath)) { if (writeHeaders) { foreach (var colInfo in columnInfoList) { format = isFirstItem ? FirstHeaderFormat : SecondHeaderFormat; stream.Write(String.Format(format, colInfo.HeaderName)); isFirstItem = false; } stream.WriteLine(); } foreach (var item in data) { isFirstItem = true; foreach (var colInfo in columnInfoList) { format = isFirstItem ? FirstItemFormat : SecondItemFormat; stream.Write(String.Format(format, colInfo.QuotedFieldCharacter, colInfo.ValueFunction.Invoke(item))); isFirstItem = false; } stream.WriteLine(); } } }