需求

1、将一个数据集合导出到一个csv文件中,集合类型可以视为 List<T>,T为任意类型,T包含多个属性,可指定部分属性进行导出

2、软件中有多种不同类型的数据类型需要进行导出

需求很简单,简单分析下

1、csv格式就是文本格式,包含多行数据,每行包含多列文字,文字间已Tab标记分隔(简单,无需过多考虑)

2、针对数据类型T可以是任意类型,

3、支持指定属性导出,同一个类型也允许指定不同的属性组分别导出

4、属性与最终生成的文件中的列 一一对应,每个属性可以设置对应的列名称

初步构想解决方案

1、指定需要导出的属性名称,通过反射获取对象的属性值

2、拼接为csv文本字符串

3、提供属性名称与列名称的一一对应关系

4、使用一个简单的导出csv工具类型,仅一个一个静态方法,接受List<T>类型数据集合,以List<Piar>方式传入ColumnName与PropertyName的键值对

5、写入某指定的csv文件

实际编码

开发过程适当合理更改,如将文件写入逻辑移除(文件写入逻辑应在上层进行),保持导出逻辑简单,形成如下代码

调用方法

假设类型定义如下

public class User
{public string Name { get;set; }public string Info { get;set; }
}

若存在一个用户列表List<User> Users{get;set;}

则生成csv格式字符串的代码如下

public string GenerateUserExportText()
{return ExportCsvUtility.GenerateExportText(Usrs, new List<KeyValuePair<string, string>>(){new KeyValuePair<string, string>("用户名", "Name"),new KeyValuePair<string, string>("用户信息", "Info"),});
}

上层使用的选择保存文件 及 写入文件的方法可以参照我提供的下列代码:

注意StreamWriter的构造方法中,需传入参数设置Unicode编码,否则Excel打开csv文件会有问题

        private bool TryGetOutFilePath(out string filePath){SaveFileDialog saveFileDialog = new SaveFileDialog(){FileName = DateTime.Now.ToString("yyyy-MM-dd HH-mm-ss"),DefaultExt = ".text",Filter = "csv documents (.csv)|*.csv",};if (saveFileDialog.ShowDialog() == true){filePath = saveFileDialog.FileName;return true;}filePath = string.Empty;return false;}private void ExportToFile(string filePath, string fullText){try{using (FileStream outFileStream = new FileStream(filePath, FileMode.Create, FileAccess.Write)){using (TextWriter textWriter = new StreamWriter(outFileStream, Encoding.Unicode)){textWriter.Write(fullText);}}}catch (Exception e){ExceptionHandler.HandleException(e);}}

后续Ant会带来更多c#相关技术文章

代码中使用的反射技巧,直接从我的其他项目中抽取了过来,后续可以专门做个介绍

转载于:https://www.cnblogs.com/gods/p/3887668.html

c#实现数据集合转换为csv文本相关推荐

  1. Python实现不规则txt文本数据读取并转换为csv文本

    1.需求描述 现在有如下数据文件: id name age 1 小明 13 2 小张 15 3 小王 13 4 张三 14 5 王五 18 需要将上述数据转化为csv文本数据,众所周知,csv是逗号分 ...

  2. python读取nc文件并转换成csv_Python提取netCDF数据并转换为csv文件

    netCDF全称是network Common Data Format(网络通用数据格式),是由美国大学大气研究协会(University Corporation for Atmospheric Re ...

  3. 怎么用python读取csv文件、并且是读取行-使用python获取csv文本的某行或某列数据的实例...

    站长用Python写了一个可以提取csv任一列的代码,欢迎使用.Github链接 csv是Comma-Separated Values的缩写,是用文本文件形式储存的表格数据,比如如下的表格: 就可以存 ...

  4. python csv读取-使用python获取csv文本的某行或某列数据的实例

    站长用Python写了一个可以提取csv任一列的代码,欢迎使用.Github链接 csv是Comma-Separated Values的缩写,是用文本文件形式储存的表格数据,比如如下的表格: 就可以存 ...

  5. 通达信日线数据转换为csv和excel格式

    freepy下载 主要功能: 通达信日线数据转换为csv格式和Excel格式数据. 可指定转换的股票数量. 分别转换沪市和深市股票. 注意: 1.修改代码中本机通达信文件夹. 2.指定转换的股票数量越 ...

  6. python json 转csv_利用python将json数据转换为csv格式的方法

    假设.json文件中存储的数据为: {"type": "Point", "link": "http://www.dianping. ...

  7. php文本分割成csv,怎么在php中将文本文件转换为csv文件并输出

    怎么在php中将文本文件转换为csv文件并输出 发布时间:2021-02-19 17:30:27 来源:亿速云 阅读:88 作者:Leah 本篇文章给大家分享的是有关怎么在php中将文本文件转换为cs ...

  8. 将excel表格数据转换为xml文本数据

    原文:http://blog.javayc.com/archives/12 这篇blog主要是讲述java中poi读取excel,并将excel中的数据转化为xml文本中的数据,而excel的版本包括 ...

  9. 利用python将json数据转换为csv格式

    假设.json文件中存储的数据为: {"type": "Point", "link": "http://www.dianping. ...

最新文章

  1. popen函数_PHP中16个高危函数
  2. java事件的接收_spring发布和接收定制的事件(spring事件传播)
  3. python创建函数、可以接受任意多个整数参数并求和_pythonxlwt:求和函数最大参数限制?...
  4. JQUERY操作html--获取和设置内容、属性、回调函数
  5. clickhouse 获取几天前的日期
  6. 依赖反转原理,IoC容器和依赖注入:第1部分
  7. hive与hbase数据类型对应关系
  8. python 近期用到的基础知识汇总(主要是skimage的相关矩阵变化函数)(二)
  9. 一步一步写算法(之快速排序)
  10. SQL Server数据类型概述
  11. Ubuntu MySQL 重新安装
  12. 浅入深出Vue:数据渲染
  13. Redis10-RDB持久化
  14. Oauth2.0如何理解?
  15. 大型网站seo方案_网站seo完整的优化方案
  16. csdn积分有什么用
  17. 我说CMMI2.0之技术解决方案
  18. 必须学会的几道家常菜
  19. Chrome安装zotero connector 插件
  20. 小程序(十六)小程序仿微信聊天页面及功能

热门文章

  1. c++11 移动语义move semantics
  2. Entity Framework教程
  3. RequestAnimationFrame知多少?
  4. codeforces 872 D. Something with XOR Queries(思维)
  5. STL之Deque的使用方法
  6. C语言拾零(to be continued)
  7. 自己设计java流程审核_关于工作流引擎取回审批的设计方案与实现过程
  8. 第一章 介绍-机器学习老师板书-斯坦福吴恩达教授
  9. 11.1 问题描述及流程-机器学习笔记-斯坦福吴恩达教授
  10. STM32 电机教程 33 - 无刷电机无感控制快速实现