C# 将List数据 导出到csv 文件
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Reflection;
using System.Text;
using System.Threading.Tasks; namespace Utilities.IO
{ /// <summary>
/// 标记属性的别名Title
/// </summary>
public class AttrForCsvColumnLabel : Attribute
{
public string Title { get; set; }
} public static class CsvFileUtility
{ /// <summary>
/// Save the List data to CSV file
/// </summary>
/// <param name="dataList">data source</param>
/// <param name="filePath">file path</param>
/// <returns>success flag</returns>
public static bool SaveDataToCSVFile<T>(List<T> dataList, string filePath) where T : class
{ bool successFlag = true; StringBuilder sb_Text = new StringBuilder();
StringBuilder strColumn = new StringBuilder();
StringBuilder strValue = new StringBuilder();
StreamWriter sw = null;
var tp = typeof(T);
PropertyInfo[] props = tp.GetProperties(BindingFlags.Public | BindingFlags.Instance); try
{
//sw = new StreamWriter(filePath);
for (int i = 0; i < props.Length; i++)
{
var itemPropery = props[i];
AttrForCsvColumnLabel labelAttr = itemPropery.GetCustomAttributes(typeof(AttrForCsvColumnLabel), true).FirstOrDefault() as AttrForCsvColumnLabel;
if (null != labelAttr)
{
strColumn.Append(labelAttr.Title);
}
else
{
strColumn.Append(props[i].Name);
} strColumn.Append(",");
}
strColumn.Remove(strColumn.Length - 1, 1);
//sw.WriteLine(strColumn);
//write the column name
sb_Text.AppendLine(strColumn.ToString()); for (int i = 0; i < dataList.Count; i++)
{
var model = dataList[i];
//strValue.Remove(0, strValue.Length);
//clear the temp row value
strValue.Clear();
for (int m = 0; m < props.Length; m++)
{
var itemPropery = props[m];
var val = itemPropery.GetValue(model, null);
if (m == 0)
{
strValue.Append(val);
}
else
{
strValue.Append(",");
strValue.Append(val);
}
} //sw.WriteLine(strValue);
//write the row value
sb_Text.AppendLine(strValue.ToString());
}
}
catch (Exception ex)
{
successFlag = false;
}
finally
{
if (sw != null)
{
sw.Dispose();
}
} File.WriteAllText(filePath, sb_Text.ToString(), Encoding.Default); return successFlag;
}
}
}
C# 将List数据 导出到csv 文件的更多相关文章
- es实战之数据导出成csv文件
从es将数据导出分两步: 查询大量数据 将数据生成文件并下载 本篇主要是将第二步,第一步在<es实战之查询大量数据>中已讲述. csv vs excel excel2003不能超过6553 ...
- vue.js纯前端处理如何将后台返回来的csv数据导出成csv文件
需要实现一个下载csv文件的功能,但后台没有对这个下载文件进行处理,而是将csv数据传给前台而已,需要前台做一下处理. 这是按钮的代码: <a> <el-button size=&q ...
- R: 导入 csv 文件,导出到csv文件,;绘图后导出为图片、pdf等
################################################### 问题:导入 csv 文件 如何从csv文件中导入数据,?参数怎么设置?常用参数模板是啥? 解决方 ...
- Elasticsearch:如何把Elasticsearch中的数据导出为CSV格式的文件
本教程向您展示如何将数据从Elasticsearch导出到CSV文件. 想象一下,您想要在Excel中打开一些Elasticsearch中的数据,并根据这些数据创建数据透视表. 这只是一个用例,其中将 ...
- Datagrid数据导出到excel文件的三种方法
原文连接: http://www.cnblogs.com/xieduo/articles/606202.html 一.文件保存在服务器,提供下载 方法一:导出到csv文件,存放在服务器端任一路径,然后 ...
- datagrid数据导出到excel文件给客户端下载的几种方法
方法一:导出到csv文件,存放在服务器端任一路径,然后给客户下载 优点: 1.可以进行身份认证后给客户下载,如果放到非web目录就没有对应的url,客户无法随时下载. 2.也是因为生成了文件,所以占用 ...
- java导出生成csv文件
首先我们需要对csv文件有基础的认识,csv文件类似excel,可以使用excel打开,但是csv文件的本质是逗号分隔的,对比如下图: txt中显示: 修改文件后缀为csv后显示如下: 在java中我 ...
- hive表数据导出到csv乱码原因及解决方案
转载自http://blog.csdn.net/lgdlxc/article/details/42126225 Hive表中的数据使用hive - e"select * from table ...
- oracle导出多CSV文件的靠谱的
oracle导出多CSV文件的问题 ---------------------------------------------------------------------- 用ksh脚本从orac ...
随机推荐
- Ceph 存储集群7-故障排除
Ceph 仍在积极开发中,所以你可能碰到一些问题,需要评估 Ceph 配置文件.并修改日志和调试选项来纠正它. 一.日志记录和调试 般来说,你应该在运行时增加调试选项来调试问题:也可以把调试选项添加到 ...
- AI: 绘制图标的实例
AI绘制矢量电影图标 http://www.fevte.com/tutorial-2299-1.html AI绘制水晶质感QUICKTIME图标 http://wenku.baidu.com/view ...
- Java中的8种基本数据类型
JAVA中的8种基本数据类型:byte short int long float double char boolean 特别说明: 1)char类型占2个字节,可以表示汉字.汉字和英文字符都占2个字 ...
- The 2019 University of Jordan Collegiate Programming Contest
链接:https://codeforc.es/gym/102267 A. Picky Eater 直接比较 int main(){ int x ,y; scanf("%d %d" ...
- POJ 1789 Truck History (Kruskal最小生成树) 模板题
Description Advanced Cargo Movement, Ltd. uses trucks of different types. Some trucks are used for v ...
- java架构之路-(netty专题)netty的编解码(出入战)与粘包拆包
上次回归: 上次博客我们主要说了netty的基本使用,都是一些固定的模式去写的,我们只需要关注我们的拦截器怎么去写就可以了,然后我们用我们的基础示例,改造了一个简单的聊天室程序,可以看到内部加了一个S ...
- num04---模板方法模式
最近看书又遇到模板方法模式,具体是在同步器(AQS)的内容上.就顺便再来回顾下. 同步器AbstractQueuedSynchronizer(AQS)是一个抽象类.其中定义了 基本 ...
- Go语言实现:【剑指offer】链表中环的入口结点
该题目来源于牛客网<剑指offer>专题. 给一个链表,若其中包含环,请找出该链表的环的入口结点,否则,输出null. Go语言实现: /** * Definition for sing ...
- D语言-认识D语言&安装
Part1: Something about "D" D语言在国外比较流行,在国内相当少的人才知道这个语言的存在 但是D语言有C++的效率,有Java的灵活 更重要的有两点: 1. ...
- 详解SkipList跳跃链表【含代码】
本文始发于个人公众号:TechFlow,原创不易,求个关注 今天继续介绍分布式系统当中常用的数据结构,今天要介绍的数据结构非常了不起,和之前介绍的布隆过滤器一样,是一个功能强大原理简单的数据结构.并且 ...