.NET 泛型集合数据写CSV文件

1.功能类

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.IO;
using System.Linq;
using System.Reflection;
using System.Text;
using System.Threading.Tasks;

namespace Infrastructure
{
    public static class FileExtensions
    {
        public static bool EnsureDirectory(string path)
        {
            if (!Directory.Exists(path))
            {
                Directory.CreateDirectory(path);
            }
            return true;
        }

public static bool CreateFile(string folder, string fileName, string fileExtension)
        {
            EnsureDirectory(folder);
            string filePath = Path.Combine(folder, string.Format("{0}.{1}",fileName, fileExtension));
            using (FileStream fileStream = new FileStream(filePath, FileMode.Create))
            {}
            return true;
        }

public static bool SaveToCsv<T>(IEnumerable<T> array, string filePath)
        {
            bool flag = true;
            try
            {
                StringBuilder stringBuilderColumn = new StringBuilder();
                StringBuilder stringBuilderValue = new StringBuilder();

Type type = typeof (T);
                object obj = Activator.CreateInstance(type);
                PropertyInfo[] props = type.GetProperties(BindingFlags.Public|BindingFlags.Instance);

props.ToList().ForEach(x => stringBuilderColumn.Append(string.Format("{0},",x.Name)));
                stringBuilderColumn.Remove(stringBuilderColumn.Length - 1, 1);

using (StreamWriter streamWriter = new StreamWriter(filePath))
                {
                    streamWriter.WriteLine(stringBuilderColumn);
                    array.ToList().ForEach(x =>
                    {
                        stringBuilderValue.Remove(0, stringBuilderValue.Length);
                        foreach (PropertyDescriptor pd in TypeDescriptor.GetProperties(typeof (T)))
                        {
                            stringBuilderValue.Append(string.Format("{0},",pd.GetValue(x) == null ? pd.GetValue(x) : pd.GetValue(x).ToString().Replace(‘,‘, ‘,‘)));
                        }
                        stringBuilderValue.Remove(stringBuilderValue.Length - 1, 1);
                        streamWriter.WriteLine(stringBuilderValue);
                    });
                }
            }
            catch
            {
                flag = false;
            }
            return flag;
        }
    }
}
2.调用方式

List<T> items = new List<T>();

xxx //为items集合赋值

string filePath = xxx;//文件存储路径

FileExtensions.SaveToCsv(items,filePath);//调用方法

原文地址:https://www.cnblogs.com/jeff151013/p/11739335.html

时间: 2024-10-05 23:17:47

.NET 泛型集合数据写CSV文件的相关文章

C#写csv文件

1.在项目中经常需要把报表下载为csv格式的文件,如何在C#中写csv文件,以下为一个简化的例子,不使用任何控件,旨在说明用法. 前端view 下载结果 2.创建一个MVC项目(Intranet Application),项目结构如下 3.各部分代码: 3.1.定义实体 using System; using System.Collections.Generic; using System.Linq; using System.Web; namespace MvcDownLoadCsv.Mode

JavaCSV之写CSV文件

与JavaCSV读CSV文件相对应,JavaCSV也可以用来写数据到CSV文件中. 1.准备工作 (1)第三方包库下载地址:https://sourceforge.net/projects/javacsv (2)相关文档:http://javacsv.sourceforge.net/ 2.使用简单的读操作 (1)引入javacsv包相应的类 import com.csvreader.CsvWriter; (2)创建文件路径 String file = "src/com/xiaoming/csv/

Jsoup学习笔记9:Jsoup 解析saz文件,读取其中的htm文件到字符串,提取字符串中的数据写入csv文件中

本篇笔记将上篇笔记的操作做些改进,不再把saz文件中的htm文件解析出来,而是不解压直接读取其中的数据成字符串,基本思路如下: 1.自定义一个从文本文件读取内容到字符串的类:解析saz文件中的htm文档,将文件的内容读取到字符串中 2.自定义利用Jsoup解析htm字符串的类:利用Jsoup解析传入的htm字符串,将解析结果写入csv文件中 3.解析时,指定好文件路径,直接调用上面的两个工具类即可 示例代码如下: package com.daxiang.saztest; /** * 自定义一个从

PHP导出数据到CSV文件函数/方法

如果不清楚什么是CSV文件,可看如下文章介绍  CSV格式的是什么文件?CSV是什么的缩写? /** * 导出数据到CSV文件 * @param array $data 数据 * @param array $title_arr 标题 * @param string $file_name CSV文件名 */ function export_csv(&$data, $title_arr, $file_name = '') { ini_set("max_execution_time"

应用Java泛型和反射导出CSV文件

项目中有需求要把数据导出为CSV文件,因为不同的类有不同的属性,为了代码简单,应用Java的泛型和反射,写了一个函数,完成导出功能. public <T> void saveFile(List<T> list, String outFile) throws IOException { if (list == null || list.isEmpty()) { return; } if (StringUtils.isEmpty(outFile)) { throw new Illega

用php导入10W条+ 级别的csv大文件数据到mysql。导出10W+级别数据到csv文件

转自:http://blog.csdn.net/think2me/article/details/12999907 1. 说说csv 和 Excel 这两者都是我们平时导出或者导入数据一般用到的载体.两者有什么区别呢?csv 格式更兼容一点.那么共同点都是GBK格式的,非UTF8.所以我们上传文件的时候,老是出现乱码,就是编码问题没有转好导致. 2. 推荐的几种方法 1. 函数 fgetss($handel);  返回字符串.它就是strip_tags(fget($handel))的组合读取cs

写csv文件时遇到的错误

1.错误 在许多文件中,写入csv文件时都加"wb",w指写入,b指二进制 如: csvwrite=csv.writer(open("output.csv","wb")) Temp=["row1","row2","row3",] csvwrite.writerow(Temp) 或者是 #!/usr/bin/env python #coding:utf-8 import csv #csv写

批量导出表数据到CSV文件

需求:把oracle数据库中符合条件的N多表.导出成csv文本文件.并以表名.csv为文件名称存放. 实现:通过存储过程中UTL_FILE函数来实现.导出的csv文件放入提前创建好的directory中. 用法:使用下面命令数据预运行的SQL脚本 SELECT 'EXEC sql_to_csv(''select * from ' ||T.TABLE_NAME || ''',''OUT_PUT_CSV''' || ',''ODS_MDS.' || T.TABLE_NAME || '.csv'');

大数据量.csv文件导入SQLServer数据库

前几天拿到了一个400多M的.csv文件,在电脑上打开要好长时间,打开后里面的数据都是乱码.因此,做了一个先转码再导入数据库的程序.100多万条的数据转码+导入花了4分钟,感觉效率还可以.各位网友有更好的方法,请在留言中指点下,一起学习学习,多谢了. static void Main(string[] args) { int count = 0; string readerPath=@"C:\Users\Administrator\Desktop\readerDemo.csv"; st