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 ...
随机推荐
- LUAMD5加密
md5里的方法: C:\Windows\System32>lua Lua 5.1.4 Copyright (C) 1994-2008 Lua.org, PUC-Rio > require( ...
- C++ STL IO流 与 Unicode (UTF-16 UTF-8) 的协同工作
09年研究技术的大神真的好多,本文测试有很多错误,更正后发布下(可能与编辑器相关). file.imbue(locale(file.getloc(), new codecvt_utf8<wcha ...
- ubuntu 14.04 安装wordpress
转者注:若没有Apache + PHP + MySQL环境,请参考我的这篇博客 (1)首先下载wordpress, sudo wget http://wordpress.org/latest.tar. ...
- POJ_1485_dp
题目描述: 每组数据给n个点,点按一维坐标升序给出,要求划分成k块,在每一块中,取一个站,要求每个块中所有的点到站的距离的和的总和最小. 思路: dp题,dp[i][j]表示i个点分成j块的最小距离, ...
- Spacemacs安装
Spacemacs官网 为什么选择Spacemacs Spacemacs是一个已经配好的Emacs和Vim,正如官网所说的The best editor is neither Emacs nor Vi ...
- css中flex布局
一.Flex布局是什么? Flex是Flexible Box的缩写,意为”弹性布局”,用来为盒状模型提供最大的灵活性. 任何一个容器都可以指定为Flex布局. .box{ display: flex; ...
- Python socket 基础(Client) - Foundations of Python Socket
Python socket 基础- Foundations of Python Socket 建立socket - establish socket import socket s = socket. ...
- javascript HierarchicalTaskAnalysis-hta编程(.hta)
main.hta code: <script>window.resizeTo(400,300);</script> <head> <hta:applicat ...
- javascript原生ajax请求
class Ajax{ constructor(url, method, data, callback_suc, callback_err, callback_run){ this.RT = true ...
- 《自拍教程5》Python自动化测试学习思路
前提:熟悉测试业务及流程 任何Python自动化测试的前提,都是必须先熟悉实际测试业务. 任何脱离实际测试业务的自动化都是噱头且无实际意义! 测试的基本流程基本是: 测试需求分析,测试用例设计与评审, ...