> 文章列表 > C#读写CSV文件帮助类

C#读写CSV文件帮助类

C#读写CSV文件帮助类

使用CsvHelper类库实现读取CSV文件对象列表

using System;
using System.Collections.Generic;
using System.Globalization;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using CsvHelper;
using CsvHelper.Configuration;

namespace DataCollectionPlatform.Service.Utility
{
    public class MyCsvHelper
    {
        public static List<T> ReadCsvByStream<T>(Stream stream)
        {
            try
            {

                Encoding.RegisterProvider(CodePagesEncodingProvider.Instance);
                using (var reader = new StreamReader(stream, Encoding.GetEncoding("GB18030")))
                using (var csv = new CsvReader(reader, new CsvConfiguration(CultureInfo.InvariantCulture)
                {
                    HeaderValidated = null,
                    MissingFieldFound = null,
                    PrepareHeaderForMatch = args => args.Header.ToLower()
                }))
                {
                    var foos = csv.GetRecords<T>().ToList();

                    return foos.ToList();
                }

            }
            catch
            {

            }

            return new List<T>();
        }
        public static List<T> ReadCsv<T>(string filePath)
        {
            try
            {

                Encoding.RegisterProvider(CodePagesEncodingProvider.Instance);
                using (var reader = new StreamReader(filePath, Encoding.GetEncoding("GB18030")))
                using (var csv = new CsvReader(reader, new CsvConfiguration(CultureInfo.InvariantCulture)
                {
                    HeaderValidated = null,
                    MissingFieldFound = null,
                    PrepareHeaderForMatch = args => args.Header.ToLower()
                }))
                {
                    var foos = csv.GetRecords<T>().ToList();

                    return foos.ToList();
                }

            }
            catch
            {

            }

            return new List<T>();
        }

        public static bool ReadCsv<T>(string filePath,List<T> data)
        {
            try
            {

                Encoding.RegisterProvider(CodePagesEncodingProvider.Instance);
                using (var writer = File.CreateText(filePath))
                using (var csv = new CsvWriter(writer, new CsvConfiguration(CultureInfo.InvariantCulture)
                {
                    HeaderValidated = null,
                    MissingFieldFound = null,
                    PrepareHeaderForMatch = args => args.Header.ToLower()
                }))
                {
                   csv.WriteRecords<T>(data);

                    return true;
                }

            }
            catch
            {

            }

            return false;
        }
    }
}