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开发接下来的路该怎么走?

    很多小伙伴们经常问我android移动开发者的走向,一部分人都想多快好省,间歇性踌躇满志.持续性混吃等死 ,只想用CV的开发模式们快速完成工作,然后回家王者农药.其实这种现象很普遍,我想告诉你的是 , ...

  2. Redis-缓存穿透/击穿/雪崩

    1. 简介 如图所示,一个正常的请求 客户端请求张铁牛的博客. 服务首先会请求redis,查看请求的内容是否存在. redis将请求结果返回给服务,如果返回的结果有数据则执行7:如果没有数据则会继续往 ...

  3. 跟我一起写 Makefile(六)

    书写命令 ---- 每条规则中的命令和操作系统Shell的命令行是一致的.make会一按顺序一条一条的执行命令,每条命令的开头必须以[Tab]键开头,除非,命令是紧跟在依赖规则后面的分号后的.在命令行 ...

  4. python数据统计之禅道bug统计

    背景 通过定期输出 每条产品的 BUG 情况,以此来反馈开发解决问题.测试跟进问题的情况:钉钉群推送提醒开发及时解决 以此我这边开始着手准备编写一个小工具,最终达到目的:自动定期发送统计报告,报告维度 ...

  5. 通过Mssql提权的几种姿势

    本文记录针对SQL Server数据库,在拿到shell之后进行提权的5种方法. 一. xp_cmdshell提权 上面的数据库连接需要知道sa的密码,连接之后,在下面的sql命令处执行: exec ...

  6. VsCode安装使用教程和插件安装方法

    许多渗透方式都python写脚本,比较方便,写一下vscode和插件的安装办法,虽然不是很复杂,但是写一下做一下笔记: Visual Studio Code (简称 VS Code / VSC) 是一 ...

  7. noip42

    T1 朴素dp很好想,设 \(dp_{u,0/1}\) ,表示以 \(u\) 为根的子树,选/不选 \(u\) 所产生的最大贡献. 转移方程则有, \[dp_{u,0} = \prod_{v\in s ...

  8. Clusternet - 新一代开源多集群管理与应用治理项目

    作者 徐迪,腾讯云容器技术专家. 汝英哲,腾讯云高级产品经理. 摘要 在过去的数年里,云计算领域经历了多次巨大的变革,当前越来越多的组织将应用部署在本地和云上的多个基础设施平台上,这些平台可能是两个公 ...

  9. kubebuilder实战之四:operator需求说明和设计

    欢迎访问我的GitHub https://github.com/zq2599/blog_demos 内容:所有原创文章分类汇总及配套源码,涉及Java.Docker.Kubernetes.DevOPS ...

  10. C#的6种常用集合类

    一.先来说说数组的不足(也可以说集合与数组的区别): 1.数组是固定大小的,不能伸缩.虽然System.Array.Resize这个泛型方法可以重置数组大小,但是该方法是重新创建新设置大小的数组,用的 ...