.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. 201521123011《Java程序设计》第11周学习总结

    1. 本周学习总结 1.1 以你喜欢的方式(思维导图或其他)归纳总结多线程相关内容. 2. 书面作业 本次PTA作业题集多线程 1.互斥访问与同步访问 完成题集4-4(互斥访问)与4-5(同步访问) ...

  2. POJ 3625 最小生成树 Prim C++

    Building Roads Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 11861   Accepted: 3376 D ...

  3. PowerDesigner连接MySQL和逆向工程图

    0.写在前面的话 最近想梳理公司项目的表间关系,从项目后台管理系统的操作入手,以及代码的hibernate注解入手,都不算特别尽人意,于是最后还是鼓捣了一下PowerDesigner的逆向工程图,这样 ...

  4. 《Java从入门到放弃》JavaSE入门篇:练习——单身狗租赁系统

    今天,我们要玩个大的!!! 我们把之前使用数组做的这个单身狗系统改版成数据库版本,并且使用面向对象里面的一些简单思想.如果有不知道这个系统的看官,请跳转到目录页,然后再选择单身狗系统(数组版)先围观五 ...

  5. bind9的一些配置

    /etc/bind/named.conf.options:options { listen-on port 53 { any; }; // 监听在主机的53端口上.any代表监听所有的主机 direc ...

  6. servlet_2

    package com.atguigu.servlet; import java.io.IOException; import javax.servlet.Servlet;import javax.s ...

  7. 转换时间对象和字符串对象&添加时间

    /* *基本思路,将字符串时间转化为时间对象,通过毫秒数来加减时间,然后在转化为字符串输出 */ //转化字符时间yy-mm-dd hh:mm:ss 为时间对象   使用split进行字符串的分割,取 ...

  8. python之gui-tkinter可视化编辑界面 自动生成代码

    首先提供资源链接 http://pan.baidu.com/s/1kVLOrIn#list/path=%2F

  9. 关于 HashTable

    hashTable 的一些认识: 底层使用散列表,存贮键值对,键值非null 使用synchronize 保证线程安全 (线程安全) ■全局变量 //The hash table data. //底层 ...

  10. 移植u-boot-2012.04.01到JZ2440

    开发环境:Ubuntu 12.04 开发板:JZ2440  256M NandFlash  64M SDRAM 交叉编译器:arm-linux-gcc-4.3.2 u-boot:u-boot-2012 ...