.cs文件直接贴代码:

using System;
using System.Collections.Generic;
using System.Data;
using System.IO;
using System.Linq;
using System.Text;
using System.Web;
using System.Web.UI; public class DataToCsv
{
public DataToCsv()
{
} /// <summary>
/// 将DataTable导出CSV表格
/// </summary>
/// <param name="dataTable">DataTable数据源</param>
/// <param name="ColumnName">标题列(英文逗号","分割)</param>
/// <param name="ColumnValue">内容列参数名称</param>
/// <param name="CsvName">导出的CSV表格名称</param>
/// <returns></returns>
public static StringBuilder Data_To_Csv(DataTable dataTable, string ColumnName, string[] ColumnValue, string CsvName)
{
DataTable dt = dataTable;
try
{
StringWriter swCSV = new StringWriter();
//列名
swCSV.WriteLine(ColumnName);//"工单编号,工单标题,工单类型,创建时间,当前状态,当前节点名称,当前处理人"
//遍历datatable导出数据
foreach (DataRow drTemp in dt.Rows)
{
StringBuilder sbText = new StringBuilder(); for (int i = ; i < ColumnValue.Length; i++) // ---------- 字段循环
{
sbText = AppendCSVFields(sbText, drTemp[ColumnValue[i].ToString()].ToString());
}
//去掉尾部的逗号
sbText.Remove(sbText.Length - , );
//写datatable的一行
swCSV.WriteLine(sbText.ToString());
}
swCSV.Close();
return swCSV.GetStringBuilder();
}
catch (Exception ex)
{
throw ex;
}
} /// <summary>
/// csv添加逗号 用来区分列
/// </summary>
/// <param name="argFields">字段</param>
/// <returns>添加后内容</returns>
public static StringBuilder AppendCSVFields(StringBuilder argSource, string argFields)
{
return argSource.Append(argFields.Replace(",", " ").Trim()).Append(",");
} /// <summary>
/// 弹出下载框
/// </summary>
/// <param name="argResp">弹出页面</param>
/// <param name="argFileStream">文件流</param>
/// <param name="strFileName">文件名</param>
public static void DownloadFile(HttpResponse argResp, StringBuilder argFileStream, string strFileName)
{
try
{
string strResHeader = "attachment; filename=" + Guid.NewGuid().ToString() + ".csv";
if (!string.IsNullOrEmpty(strFileName))
{
strResHeader = "inline; filename=" + strFileName;
}
argResp.AppendHeader("Content-Disposition", strResHeader);//attachment说明以附件下载,inline说明在线打开
argResp.ContentType = "application/ms-excel";
argResp.ContentEncoding = Encoding.GetEncoding("GB2312"); // Encoding.UTF8;//
argResp.Write(argFileStream); }
catch (Exception ex)
{
throw ex;
}
}
}

调用示例:

DataSet ds = (DataSet)Session["data"];
DataTable dt = ds.Tables[];
string[] values = { "S_ID", "S_Name", "S_Grade", "S_Class" };
DataToCsv.DownloadFile(Response, DataToCsv.Data_To_Csv(dt, "学号,姓名,年级,班级", values, ViewState["Title"].ToString() + "报名表"), ViewState["Title"].ToString() + "报名表.csv");
Response.End();

C#导出.csv格式的excel表的更多相关文章

  1. PHP导出超大的CSV格式的Excel表方案

    场景和痛点 说明 我们工作场景都常会导出相关的excel数据,有时候需要大量的数据,10W,100W都有可能 我们现有方案都是直接利用phpexcel等类库来操作,phpexcel的load加载或是写 ...

  2. mac中导出CSV格式在excel中乱码

    1 - 首先需要查看文档的编码格式: 安装enca:  brew install enca 使用命令 enca  file路径即可查到文件的编码格式 Universal transformation ...

  3. 导出CSV格式文件,用Excel打开乱码的解决办法

    导出CSV格式文件,用Excel打开乱码的解决办法 1.治标不治本的办法 将导出CSV数据文件用记事本打开,然后另存为"ANSI"编码格式,再用Excel打开,乱码解决. 但是,这 ...

  4. OAF_文件系列2_实现OAF导出CSV格式文件ExportButton(案例)

    20150727 Created By BaoXinjian

  5. mysqldump导出CSV格式及where导出时间范围问题解决

    众所周知,mysqldump不但可以导出sql格式,还可以导出csv格式. 导出CSV格式的具体使用如下命令. mysqldump -uroot -ppassword -S /tmp/mysql999 ...

  6. 将CSV格式或者EXCEL格式的文件导入到HIVE数据仓库中

    学习内容:数据导入,要求将CSV格式或者EXCEL格式的文件导入到HIVE数据仓库中: ①hive建表:test1 create table test1 (InvoiceNo String, Stoc ...

  7. java导出csv格式文件

    导出csv格式文件的本质是导出以逗号为分隔的文本数据 import java.io.BufferedWriter; import java.io.File; import java.io.FileIn ...

  8. Bash中使用MySQL导入导出CSV格式数据[转]

    转自: http://codingstandards.iteye.com/blog/604541 MySQL中导出CSV格式数据的SQL语句样本如下:   select * from test_inf ...

  9. javascript导出csv文件(excel)

    这里贴出JavaScript导出csv文件(excel)的代码. /** * 导出excel * @param {Object} title 标题列key-val * @param {Object} ...

随机推荐

  1. Java实现Windows平台下Ping的最佳方法

    先上结论:通过调用系统自带的Ping命令来实现,使用exitValue()值来判断Ping的结果.按照惯例,0表示ok,1表示不通. private static void pingTest1() t ...

  2. 201521123068 《java程序设计》 第11周学习总结

    1. 本周学习总结 1.1 以你喜欢的方式(思维导图或其他)归纳总结多线程相关内容. 多线程的冲突:同时运行的线程需要访问共享数据(临界资源) 多线程的互斥访问:两个或两个以上的线程需要同时对同一数据 ...

  3. 【Intellij Idea】设置JDK

    1,File-->Project Structure 说明:可以设置整个工程的JDK,也设置每个modules的JDK,但是一般整个工程的JDK. 2,或者通过快捷键:ctrl+alt+shif ...

  4. php memcache 扩展 php -m 与 phpinfo() 不同

    事情起因,因要升级 openssl(openssl升级这里不表) ,所以在升级后对 php 也进行了从新编译,编译成功. 发现没有安装,memcache 扩展,从新编译安装了一下,显示的安装成功,但是 ...

  5. Spring security csrf实现前端纯html+ajax

    spring security集成csrf进行post等请求时,为了防止csrf攻击,需要获取token才能访问 因此需要添加 <input type="hidden" na ...

  6. 通过Excel认识POI

    1.POI是什么 Apache POI - the Java API for Microsoft Documents,顾名思义,Apache的三方包,用来操作微软office文档的,多数时候用来操作e ...

  7. java基础知识1--String常用方法总结

    主要涉及String常用的方法. package collection; import java.lang.reflect.Array; import java.util.Arrays; /** * ...

  8. NIO通讯框架之Mina

          在两三年前,阿堂在技术博客(http://blog.sina.com.cn/heyitang)上曾经写过"JAVA新I/O学习系列笔记(1)"和"JAVA新I ...

  9. C#中的两把双刃剑:抽象类和接口

    问题出现: 这也是我在学习抽象类和接口的时候遇到的问题,从我归纳的这三个问题,不难看出这也许是我们大多数程序员遇到问题的三个阶段, 第一阶段(基础概念):就象问题1一样,这部分人首先需要扫清基础概念的 ...

  10. angular 自定义指令详解 Directive

    在angular中,Directive,自定义指令的学习,可以更好的理解angular指令的原理,当angular的指令不能满足你的需求的时候,嘿嘿,你就可以来看看这篇文章,自定义自己的指令,可以满足 ...