asp mvc 导出txt 文件泛型方法分享:

public static void ExportFile<T>(T obj)
{ StringBuilder str = new StringBuilder(); //列出obj 对象中的所有属性
System.Reflection.PropertyInfo[] properties = obj.GetType().GetProperties(); if (properties != null && properties.Length > 0)
{
// 局部变量 用来判断循环次数,输出换行和逗号
int j = 0; foreach (var item in properties)
{
// 获取属性值
object objvalue = item.GetValue(obj, null);
//是否是泛型类型
if (item.PropertyType.IsGenericType)
{ Type objType = objvalue.GetType();
// 获取泛型集合总数
int count = Convert.ToInt32(objType.GetProperty("Count").GetValue(objvalue, null));
// 遍历集合
for (int i = 0; i < count; i++)
{ object listitem = objType.GetProperty("Item").GetValue(objvalue, new object[] { i }); System.Reflection.PropertyInfo[] myPros = listitem.GetType().GetProperties();
// 局部变量 用来判断循环次数,输出换行和逗号
int k = 0;
// 遍历集合中的属性
foreach (var m in myPros)
{
// 属性名
//str.Append(m.Name);
//str.Append(",");
//str.Append("\t");
if (m.GetValue(listitem, null) != null)
{
// 属性值
str.Append(m.GetValue(listitem, null));
}
else
{
str.Append("空值");
}
// 换行
if ((k+1) % 2 == 0)
{
str.Append("\n");
}
// 输出 逗号
else if (k % 2 == 0)
{
str.Append(",");
}
k++;
}
}
} // 非泛型类型
else
{
// 属性名
//str.Append(item.Name);
//str.Append(",");
//str.Append("\t"); //判断属性值
if (item.GetValue(obj, null) != null)
{
// 属性值
str.Append(item.GetValue(obj, null));
}
else
{
str.Append("空值");
}
// 换行
if ((j+1) % 2 == 0)
{
str.Append("\n");
}
// 输出逗号
else if (j % 2 == 0)
{
str.Append(",");
}
j++;
}
}
} HttpContext.Current.Response.Clear();
// 启用缓存
HttpContext.Current.Response.Buffer = true;
//中文编码
HttpContext.Current.Response.Charset = "GB2312"; // 或者 "utf-8"
// 设置编码方式
HttpContext.Current.Response.ContentEncoding = Encoding.UTF8; //文件名称
string filename = DateTime.Now.ToString("yyyyMMddHHmmssffff") + ".txt"; /// 设置http 请求头,直接指向文件
HttpContext.Current.Response.AddHeader("Content-Disposition",
"attachment;filename=" + HttpContext.Current.Server.UrlEncode(filename)); //指定返回的是一个不能被客户端读取的流,必须被下载
HttpContext.Current.Response.ContentType = "text/plain"; // 或者 application/ms-txt //把文件流发送到客户端
HttpContext.Current.Response.Write(str.ToString());
// 停止页面的执行
HttpContext.Current.Response.End();
}

因时间仓促,代码 也有不足之处,如果您有什么好的想法,欢迎提出并与我交流

asp mvc 导出txt 文件泛型方法的更多相关文章

  1. ASP.NET MVC 导出CSV文件

    ASP.NET MVC   导出CSV文件.直接贴代码 /// <summary> /// ASP.NET MVC导出CSV文件Demo1 /// </summary> /// ...

  2. C# DataGirdview手动添加数据,导出txt文件并自动对齐

    //DataGirdview手动添加数据 private void btnDataGirdView_Click(object sender,EventArgs e) {       dataGridV ...

  3. ASP.NET 保存txt文件

    public void ProcessRequest(HttpContext context) { context.Response.Clear(); context.Response.Buffer ...

  4. asp.net 导出excel文件

    之前做过winfrom程序的导出excel文件的功能,感觉非常简单.现在试着做asp.net中导出excel的功能,之前用的是Microsoft.Office.Interop.Excel这个对象来实现 ...

  5. java读取txt文件,对字符串进行操作后导出txt文件

    嘿嘿,代码略为简单,不再多做解释,直接上码! package org.lq.com.util; import java.io.File; import java.io.InputStreamReade ...

  6. MVC C# 直接导出txt文件

    用asp.net根据数据内容自动生成一个txt文本文件并提供用户下载,此方法文件不保存在服务器上,直接提供给用户下载,到网上搜了一下,都是用的Response.BinaryWrite(),用了几下,发 ...

  7. ASP.NETCore -----导出Excel文件并下载

    本事例分为nopi(安装DotNetCore.NPOI)下载和EPPlus(EPPlus.Core.dll)下载,其中npoi下载演示的是根据执行的模板进行数据下载 npoi帮助类NpoiExcelU ...

  8. ASP.NET导出Excel文件

    第一种最常见,并且最简单的方式,直接把GridView导出,导出格式为文本表格形式. protected void btnSaveExcel_Click(object sender, EventArg ...

  9. ASP.NET导出bdf文件

    1.导出助手类 using System;using System.IO;using System.Data;using System.Data.OleDb;using System.Web;usin ...

随机推荐

  1. 安装plsql developer

    需求:要连接oracle数据库,不想在本地安装oracle,太大,又占内存,所以用plsql developer.. 在网上看了很多博客,妈呀,被毒的不清,一直提示初始化失败,就是那个oci,dll ...

  2. JAVA高并发系列

    高并发Java(1):前言 高并发Java(2):多线程基础 高并发Java(3):Java内存模型和线程安全 高并发Java(4):无锁 高并发Java(5):JDK并发包1 高并发Java(6): ...

  3. Centos7 环境下 Python2.7 换成 Python3.7 运行 scrapy 应用所遇到的问题记录

    参考网友的安装过程 Linux系统Centos安装Python3.7 设置Python默认为Python3.7 mv /usr/bin/python /usr/bin/python.bak ln -s ...

  4. InfluxDB 常用命令

    查表: http://192.168.0.200:8086/query?q=select+*+from+telegraf..cpu http://192.168.0.200:8086/query?q= ...

  5. 校验台湾身份证号码的js脚本

    网上搜了一下,居然没有,只好自己写一个. //台湾地区身份证校验 function IsTWIdcard(idcard){ if(/^[A-Z][1-2]\d{8}$/.test(idcard)) { ...

  6. 黄聪:AngularJS 动态加载控制器实例-ocLoazLazy

    一.AngularJS动态加载控制器和视图实例 路由配置关键代码: //二级页面 $stateProvider.state('main', { url: '/:name', /**如果需要动态加载数据 ...

  7. Python 模块EasyGui详细介绍

    转载:无知小德 Python 模块EasyGui详细介绍 EasyGui 官网: http://easygui.sourceforge.net 官方的教学文档:http://easygui-docs- ...

  8. P2871 手链

    传送 这个题的数据限制没有翻译出来,所以有可能产生爆内存现象 再此翻译一下:1<=n(物品个数)<=3402,1<=M(总重量)<=12880 (就这两个有点用) 显然这是一个 ...

  9. java高并发编程(三)

    java高并发主要有三块知识点: synchronizer:同步器,在多个线程之间互相之间怎么进行通讯,同步等: 同步容器:jdk提供了同步性的容器,比如concurrentMap,concurren ...

  10. PAT 乙级 1047 编程团体赛(20) C++版

    1047. 编程团体赛(20) 时间限制 400 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 CHEN, Yue 编程团体赛的规则为:每个参赛队由若 ...