예제 #1
0
        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);
        }
예제 #2
0
        /// <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);
        }
예제 #3
0
        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));
        }
예제 #4
0
        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);
        }
예제 #5
0
        /// <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();
                }
            }
        }