CsvHelper

 using CsvHelper.Configuration;
 using System;
 using System.Collections;
 using System.Collections.Generic;
 using System.IO;
 using System.Linq;
 
 namespace CsvHelper
 {
    class Program
    {
        static void Main(string[] args)
        {
            string userProfile = Environment.GetFolderPath(Environment.SpecialFolder.UserProfile);
            string path1 = Path.Combine(userProfile, @"test1.csv");
            string path2 = Path.Combine(userProfile, @"test2.csv");
 
            var records = new List<object>()
                { 
                    new { id = 123, name = "abc"},
                    new { id = 456, name = "xyz"},
                };
 
            using (TextWriter writer = File.CreateText(path1)) {
                var csv = new CsvWriter(writer);
                csv.Configuration.HasHeaderRecord = false;
                csv.WriteRecords((IEnumerable)records);
            }
 
            var records2 = new List<User>() {
                new User {Id = 100, Name = "a\"bc", Age = 10},
                new User {Id = 101, Age = 30},
                new User {Id = 102, Name = "sml"},
            }.ToList();
 
            AutoMapper.Mapper.CreateMap<User, CustomUser>();
            var records3 = new List<CustomUser>();
            foreach (var r in records2) {
                records3.Add(AutoMapper.Mapper.Map<CustomUser>(r));
            }
 
            using (TextWriter writer = File.CreateText(path2)) {
                var csv = new CsvWriter(writer);
                csv.Configuration.RegisterClassMap<UserMap>();
                csv.WriteRecords((IEnumerable)records3);
            }
 
            using (var memStream = new MemoryStream())
            using (var streamWriter = new StreamWriter(memStream) { AutoFlush = true })
            using (var csvWriter = new CsvWriter(streamWriter)) {
                csvWriter.Configuration.RegisterClassMap<UserMap>();
                csvWriter.WriteRecords((IEnumerable)records3);
                memStream.Position = 0;
 
                var reader = new StreamReader(memStream);
                var csvFile = reader.ReadToEnd();
                Console.Write(csvFile.ToString());
            }
            Console.WriteLine("CsvHelper");
            Console.ReadKey();
        }
    }
 
    class User
    {
        public int Id { get; set; }
        public string Name { get; set; }
        public int Age { get; set; }
    }
 
    class CustomUser
    {
        public int Id { get; set; }
        public string Name { get; set; }
        public int Age { get; set; }
        public string AgeDisp
        {
            get
            {
                if (Age == 0) {
                    return "No Age";
                }
                else {
                    return Age.ToString();
                }
            }
        }
    }
 
    class UserMap : CsvClassMap<CustomUser>
    {
        public UserMap()
        {
            Map(m => m.Id).Name("User Id").Index(0);
            Map(m => m.Name).Index(1);
            Map(m => m.AgeDisp).Name("Age").Index(2);
        }
    }
 }

参考


トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS

Last-modified: 2014-03-22 (土) 18:26:29