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. 2020互联网寒冬之下,作为一个Android老码农,是如何进入腾讯的?

    由于众所周知的原因,原生Android开发如今已经日渐凋敝,作为一个Android程序员,不仅要会Java,Kotlin,JavaScript,Css,Html,还要会Flutter,C++,FFmp ...

  2. XV6学习笔记(1) : 启动与加载

    XV6学习笔记(1) 1. 启动与加载 首先我们先来分析pc的启动.其实这个都是老生常谈了,但是还是很重要的(也不知道面试官考不考这玩意), 1. 启动的第一件事-bios 首先启动的第一件事就是运行 ...

  3. Java 横向技术 Spring框架【笔记】

    Java横向技术 spring框架[笔记] Spring 的两大特性是什么? AOP(Aspect Oriented Programming,面向切面编程)与 IOC(Inverse of Contr ...

  4. QZEZTEST2021.7.27分析

    T1 qzez 错误检测 题意 思路 代码 T2 qzez 比赛 题意 题面 有\(AB\)两队,每队\(n\)人,两队间进行\(n\)场比赛,每个人都要参赛,对手随机且概率均等.每人都有一个实力值, ...

  5. STM32—位带操作

    STM32中的位带操作: 名字为位带操作,实际上是对位的操作,位操作就是可以单独的对一个比特位读和写,这个在 51 单片机中非常常见. 51 单片机中通过关键字 sbit 来实现位定义, STM32 ...

  6. noip8

    T1 星际旅行 考试时觉得是道数学题,但没想到忘了欧拉路. 首先将每条边都拆成两条边,那么题目就变成了任意删掉两条边,使得新的图中存在欧拉路.设 \(sum\) 表示自环的数量, \(du_{i}\) ...

  7. Git在IDEA中的日常使用

    1.Git介绍Git对于做开发的小伙伴并不陌生,Git是现在比较流行的版本控制工具.Git的仓库分为本地仓库和远程仓库,当代码开发完成后,先提交(commit)到本地仓库,再推送(push)到远程仓库 ...

  8. 【Azure 应用服务】App Service For Container 配置Nginx,设置/home/site/wwwroot/目录为启动目录,并配置反向代理

    问题描述 通过Docker Desktop for Linux,配置Nginx镜像后,自定义nginx.conf文件,修改启动目录和对 /out 路径的反向代理到博客园的博文地址 (https://w ...

  9. SpringBoot跨域

    第一种方法 在Controller类或方法上加上@CrossOrigin元注解 package com.wzq.test.action; import com.wzq.utils.BatchDownF ...

  10. adobe cc 系列产品更改默认安装路径方法

    通过Adobe Creative Cloud 修改 1.在开始菜单中找到图下程序点开,并进行如下操作: 2.点击Apps位置 等待加载出软件,如图下所示. 点击右上角图标,会弹出以下窗口,点击首选项 ...