http://www.woaic.com/2012/06/64

excel文件主要是输出html代码。以xls的文本格式保存文件。

生成excel格式的代码:

/// <summary>

 /// 输出excel格式的html代码

 /// </summary>

 /// <param name="dt"></param>

 /// <param name="fileName"></param>

 /// <param name="tableHeader"></param>

 /// <param name="UseDefinedHeader"></param>

 /// <returns></returns>

 public string MakeExcelStr(DataTable dt, string fileName, string[] tableHeader,bool UseDefinedHeader)

 {

 StringBuilder strResult = new StringBuilder();

 int iColCount = dt.Columns.Count;

 if (dt.Columns.Count == 0)

 return strResult.ToString();

 strResult.Append("<table cellspacing=\"0\" cellpadding=\"5\" rules=\"all\" border=\"1\">");

 strResult.Append("<tr style=\"font-weight: bold; white-space: nowrap;\">");

 if (UseDefinedHeader)//是否是用户自定义表头

 {

 for (int i = 0; i < tableHeader.Length; i++)

 {

 strResult.Append("<td style=\"text-align:center\">" + tableHeader[i] + "</td>");//让文本居中显示

 }

 }

 else

 {

 for (int i = 0; i < iColCount; i++)

 {

 strResult.Append("<td style=\"text-align:center\">" + (dt.Columns[i] + "").ToString() + "</td>");

 }

 }

 strResult.Append("</tr>");

 foreach (DataRow dr in dt.Rows)

 {

 strResult.Append("<tr>");

 for (int i = 0; i < iColCount; i++)

 {

 // style=\"vnd.ms-excel.numberformat:@\"

 strResult.Append("<td style=\"vnd.ms-excel.numberformat:@\">'" + (dr[i] + "").ToString() + "</td>");//设置单元格是文本格式(防止文本是科学计算法,即E+***这种情况)

 }

 strResult.Append("</tr>");

 }

 strResult.Append("</table>");

 

return strResult.ToString();

 }

把生成的excel格式的代码保存成excel文件的方法

/// <summary>

 /// 导出excel表格

 /// </summary>

 /// <param name="dt"></param>

 /// <param name="fileName"></param>

 /// <param name="tableHeader">表头</param>

 /// <param name="Defined">是否自定义表头</param>

 private void ExprotToExcel(DataTable dt, string fileName, string[] tableHeader, bool Defined)

 {

 DogManage.Common.ExcelHelper excelHelper = new DogManage.Common.ExcelHelper();

 string result = excelHelper.MakeExcelStr(dt, fileName, tableHeader,Defined);

 

 HttpContext.Current.Response.Clear();

 System.IO.StringWriter sw = new System.IO.StringWriter();

 sw.Write(result);

 sw.Close();

 string str2 = HttpUtility.UrlEncode(fileName + "_" + DateTime.Now.ToString("yyyy-MM-dd"));

 HttpContext.Current.Response.AddHeader("Content-Disposition", "attachment; filename=" +str2 + ".xls");

 HttpContext.Current.Response.ContentType = "application/ms-excel";

 HttpContext.Current.Response.ContentEncoding = System.Text.Encoding.GetEncoding("UTF-8");

 HttpContext.Current.Response.Write(sw);

 HttpContext.Current.Response.End();

 }

生成word的代码:

private void exportword()

 {

 Response.Clear();

 Response.Buffer = true;

 Response.Charset = "utf-8";

 Response.AppendHeader("Content-Disposition", "attachment;filename=tmp.doc");

 Response.ContentEncoding = System.Text.Encoding.GetEncoding("utf-8");

 

Response.ContentType = "application/ms-word";

 this.EnableViewState = false;

 System.IO.StringWriter oStringWriter = new System.IO.StringWriter();

 System.Web.UI.HtmlTextWriter oHtmlTextWriter = new System.Web.UI.HtmlTextWriter(oStringWriter);

 oHtmlTextWriter.WriteLine(hf.Value);

 Response.Write(oStringWriter.ToString());

 Response.End();

 }

csv文件就是一个有特定格式的字符串拼接出来的文件,每个列通过,分割开来。换行则两外输出一行文本就行了

生成csv文件的代码:

/// <summary>

 /// 输出csv文件的代码

 /// </summary>

 /// <param name="dt"></param>

 /// <param name="fileName"></param>

 /// <param name="tableHeader">表头</param>

 /// <returns></returns>

 public string MakeCSVStr(DataTable dt, string fileName, string[] tableHeader)

 {

 StringBuilder strResult = new StringBuilder();

 string temp = string.Empty;

 int iColCount = dt.Columns.Count;

 if (iColCount == 0)

 return strResult.ToString();

 for (int i = 0; i < iColCount; i++)

 {

 temp+="\"" + dt.Columns[i] + "\"";

 if (i < iColCount - 1)

 temp+=",";

 }

 strResult.AppendLine(temp);

 foreach (DataRow dr in dt.Rows)

 {

 temp = "";

 for (int i = 0; i < iColCount; i++)

 {

 if (!Convert.IsDBNull(dr[i]))

 temp+="\"" + dr[i].ToString() + "\"";

 else

 temp += "\"\"";

 if (i < iColCount - 1)

 temp+=",";

 }

 strResult.AppendLine(temp);

 }

 return strResult.ToString();

 }

导出csv文件的方法:

/// <summary>

 /// 导出csv文件

 /// </summary>

 /// <param name="dt"></param>

 /// <param name="fileName"></param>

 /// <param name="tableHeader">表头</param>

 /// <param name="Defined">是否自定义表头</param>

 private void ExprotToCSV(DataTable dt,string fileName, string[] tableHeader)

 {

 DogManage.Common.ExcelHelper excelHelper = new DogManage.Common.ExcelHelper();

 string result=excelHelper.MakeCSVStr(dt, fileName, tableHeader);

 

HttpContext.Current.Response.Clear();

 System.IO.StringWriter sw = new System.IO.StringWriter();

 sw.Write(result);

 sw.Close();

 HttpContext.Current.Response.AddHeader("Content-Disposition", "attachment; filename=" + fileName + ".csv");

 HttpContext.Current.Response.ContentType = "application/vnd.ms-excel";

 HttpContext.Current.Response.ContentEncoding = System.Text.Encoding.GetEncoding("GB2312");

 HttpContext.Current.Response.Write(sw);

 HttpContext.Current.Response.End();

 }

导出excel、word、csv文件方法汇总的更多相关文章

  1. PHP导出数据到CSV文件函数/方法

    如果不清楚什么是CSV文件,可看如下文章介绍  CSV格式的是什么文件?CSV是什么的缩写? /** * 导出数据到CSV文件 * @param array $data 数据 * @param arr ...

  2. (转载)DBGridEh导出Excel等格式文件

    DBGridEh导出Excel等格式文件 uses DBGridEhImpExp; {--------------------------------------------------------- ...

  3. Excel打开csv文件乱码问题的解决办法

    excel打开csv 出现乱码怎么解决 https://jingyan.baidu.com/article/ac6a9a5e4c681b2b653eacf1.html CSV是逗号分隔值的英文缩写,通 ...

  4. js原生导出excel和csv

    ​ 严格意义来说并不是真正的excel文件,只是可以用excel打开查看而已,实际上的格式是逗号分隔文件即csv文件. 这里有几个坑要说一下: 不加Unicode的utf8头部标识excel打开文件会 ...

  5. mysql导出数据到csv文件

    在日常工作中经常会遇见导出表中的数据到csv文件的操作,这里就简单总结一下导出的操作. 下面对csv文件的描述是摘录: 据RFC4180文档设置的,该文档全称Common Format and MIM ...

  6. PHP导出数据到CSV文件函数 csv_export()

    后台往往需要导出各种数据到 Excel文档中.通常我们是导出 .csv文件格式,PHP导出函数参考代码如下: /** * 导出数据到CSV文件 * * @param array $data 二维数组( ...

  7. PHP导出数据到CSV文件

    后台往往需要导出各种数据到 Excel文档中.通常我们是导出 .csv文件格式,PHP导出函数参考代码如下: /** * 导出数据到CSV文件 * * @param array $data 二维数组( ...

  8. DataGird导出EXCEL的几个方法

    DataGird导出EXCEL的几个方法(WebControl) using System;using System.Data;using System.Text;using System.Web;u ...

  9. excel打开csv文件乱码解决办法

    参考链接: https://jingyan.baidu.com/article/4dc408484776fbc8d846f168.html 问题:用 Excel 打开 csv 文件,确认有乱码的问题. ...

随机推荐

  1. 堪称教科书级别的Android音视频入门进阶学习手册,开源分享!

    概述 随着整个互联网的崛起,数据传递的形式也在不断升级变化,总的流行趋势如下: 纯文本的短信,QQ -> 空间,微博,朋友圈的图片文字结合 -> 微信语音 -> 各大直播软件 -&g ...

  2. Ivy入门笔记

    安装过程 命令行安装 下载和安装JDK5.Eclipse3.5.Ant 1.8.Ivy 2.2: 安装JDK:成功标志:在命令行下运行java命令,得到java命令行帮助: 安装Ant:解压Ant,在 ...

  3. CAS 5.3使用MySQL数据库验证

    一.本例环境说明 JDK 1.8 CAS 5.3 apache-maven-3.6.0 mysql-5.6.32 二.CAS 5.3基础环境搭建与验证 需要按照<CAS 5.3服务器搭建> ...

  4. SpringBoot监听redis订阅监听和发布订阅

    前言 我们可以在redis中发布一条订阅到通道中,所有监听了这个通道的都可以收到这个发布的内容! redis订阅监听配置类 代码如下: RedisListenerConfig.java package ...

  5. express中session的基本使用

    1.首先安装express-session模块 npm install express-session --save 2.引入express-session,以及设置中间键 var session = ...

  6. Java常用类之时间类

    JDK8之前日期时间API 1. java.lang.System类 2. java.util.Date类 3. java.text.SimpleDateFormat类 4. java.util.Ca ...

  7. unity优化 — 纹理(优化)通道分离

    unity针对Android平台还提供了通道分离的方式:将图片(sprite)压缩成ETC1,提取Alpha生成一张通道图.unity将通道图保存的格式为a8格式,目的为了让混合起来的Alpha效果很 ...

  8. Ubuntu中添加desktop entry

    创建desktop文件 gedit my_app.desktop 添加文件内容,在启动时,选择加载的bashrc文件,用于初始化,这样可以用不同的desktop entry启动不同的环境,提高打开环境 ...

  9. 接口自动化-python+requests+pytest+csv+yaml

    本套代码和逻辑 是本人的劳动成果,如果有转载需要标注, 非常适合公司做项目的同学!!!小白也可以学哦! 1.项目目录  2.公共方法的封装 2.1如果不用配置文件 可以使用这个方法进行封装--但是有一 ...

  10. GUI实现超简单的计算器

    计算器样式 实现代码 //实现超简易的计算器 public class Test02 { public static void main(String[] args) { Counter counte ...