原文发布时间为:2010-06-21 —— 来源于本人的百度文章 [由搬家工具导入]

======目前方法=========== #region 生成Excel
/// <summary>
/// DataSet导出Excel
/// </summary>
/// <param name="arrTitle">列标题,若为null,则直接取dataset列标题</param>
/// <param name="ds">要导出的DataSet</param>
/// <param name="fileName">Excel文件名,不需要传入扩展名</param>
protected void CreateExcel(string[] arrTitle, DataSet ds, string fileName)
{
StringBuilder strb = new StringBuilder();
strb.Append(" <html xmlns:o=\"urn:schemas-microsoft-com:office:office\"");
strb.Append("xmlns:x=\"urn:schemas-microsoft-com:office:excel\"");
strb.Append("xmlns=\"http://www.w3.org/TR/REC-html40\"");
strb.Append(" <head> <meta http-equiv='Content-Type' content='text/html; charset=gb2312'>");
strb.Append(" <style>");
strb.Append(".xl26");
strb.Append(" {mso-style-parent:style0;");
strb.Append(" font-family:\"Times New Roman\", serif;");
strb.Append(" mso-font-charset:0;");
strb.Append(" mso-number-format:\"@\";}");
strb.Append(" </style>");
strb.Append(" <xml>");
strb.Append(" <x:ExcelWorkbook>");
strb.Append("  <x:ExcelWorksheets>");
strb.Append("  <x:ExcelWorksheet>");
strb.Append("    <x:Name>Sheet1 </x:Name>");
strb.Append("    <x:WorksheetOptions>");
strb.Append("    <x:DefaultRowHeight>285 </x:DefaultRowHeight>");
strb.Append("    <x:Selected/>");
strb.Append("    <x:Panes>");
strb.Append("      <x:Pane>");
strb.Append("      <x:Number>3 </x:Number>");
strb.Append("      <x:ActiveCol>1 </x:ActiveCol>");
strb.Append("      </x:Pane>");
strb.Append("    </x:Panes>");
strb.Append("    <x:ProtectContents>False </x:ProtectContents>");
strb.Append("    <x:ProtectObjects>False </x:ProtectObjects>");
strb.Append("    <x:ProtectScenarios>False </x:ProtectScenarios>");
strb.Append("    </x:WorksheetOptions>");
strb.Append("  </x:ExcelWorksheet>");
strb.Append("  <x:WindowHeight>6750 </x:WindowHeight>");
strb.Append("  <x:WindowWidth>10620 </x:WindowWidth>");
strb.Append("  <x:WindowTopX>480 </x:WindowTopX>");
strb.Append("  <x:WindowTopY>75 </x:WindowTopY>");
strb.Append("  <x:ProtectStructure>False </x:ProtectStructure>");
strb.Append("  <x:ProtectWindows>False </x:ProtectWindows>");
strb.Append(" </x:ExcelWorkbook>");
strb.Append(" </xml>");
strb.Append("");
strb.Append(" </head> <body> <table align=\"center\" style='border-collapse:collapse;table-layout:fixed'> <tr>");

if (ds.Tables.Count > 0)
{
//写列标题 
if (arrTitle != null && arrTitle.Length > 0)
{
foreach (string strCol in arrTitle)
{
strb.Append(" <td> <b>" + strCol + " </b> </td>");
}
strb.Append(" </tr>");
}
else
{
int columncount = ds.Tables[0].Columns.Count;
for (int columi = 0; columi < columncount; columi++)
{
strb.Append(" <td> <b>" + ds.Tables[0].Columns[columi] + " </b> </td>");
}
strb.Append(" </tr>");
}

//写数据    
for (int i = 0; i < ds.Tables[0].Rows.Count; i++)
{
strb.Append(" <tr>");
for (int j = 0; j < ds.Tables[0].Columns.Count; j++)
{
strb.Append(" <td class='xl26'>" + ds.Tables[0].Rows[i][j].ToString() + " </td>");
}
strb.Append(" </tr>");
}
}
strb.Append(" </body> </html>");
Response.Clear();
Response.Buffer = true;
Response.Charset = "GB2312";
Response.AppendHeader("Content-Disposition", "attachment;filename=" + HttpUtility.UrlEncode(fileName, System.Text.Encoding.UTF8) + ".xls");
Response.ContentEncoding = System.Text.Encoding.GetEncoding("GB2312");//设置输出流为简体中文  
Response.ContentType = "application/ms-excel";//设置输出文件类型为excel文件。  
this.EnableViewState = false;
Response.Write(strb);
Response.End();
}
#endregion

//不过为什么导出Excel,单元格是受保护呢!
//导出word,只要把扩展名 .xls 改成 .doc即可。
//这个人也是用这个方法:http://wyf.javaeye.com/blog/531171

===============以往方法===============
#region 生成Excel
/// <summary>
/// DataSet导出Excel
/// </summary>
/// <param name="arrTitle">列标题,若为null,则直接取dataset列标题</param>
/// <param name="ds">要导出的DataSet</param>
/// <param name="fileName">Excel文件名,不需要传入扩展名</param>
protected void CreateExcel(string[] arrTitle, DataSet ds, string fileName)
{
HttpResponse resp;
resp = Page.Response;
resp.ContentEncoding = System.Text.Encoding.GetEncoding("GB2312");
resp.AppendHeader("Content-Disposition", "attachment;filename=" + HttpUtility.UrlEncode(fileName, System.Text.Encoding.UTF8) + ".xls");
string colHeaders = "", ls_item = "";
//定义表对象与行对象,同时用DataSet对其值进行初始化
System.Data.DataTable dt = ds.Tables[0];
DataRow[] myRow = dt.Select();//可以类似dt.Select("id>10")之形式达到数据筛选目的
int i = 0;
int cl = dt.Columns.Count;

//取得数据表各列标题,各标题之间以t分割,最后一个列标题后加回车符
if (arrTitle != null && arrTitle.Length > 0)
{
for (i = 0; i < arrTitle.Length; i++)
{
if (i == (arrTitle.Length - 1))//最后一列,加n
{
colHeaders += arrTitle[i] + "\n";
}
else
{
colHeaders +=arrTitle[i] + "\t";
}
}
}
else
{
for (i = 0; i < cl; i++)
{
if (i == (cl - 1))//最后一列,加n
{
colHeaders += dt.Columns[i].Caption.ToString() + "\n";
}
else
{
colHeaders += dt.Columns[i].Caption.ToString() + "\t";
}
}
}

resp.Write(colHeaders);
//向HTTP输出流中写入取得的数据信息
//逐行处理数据 
foreach (DataRow row in myRow)
{
//当前行数据写入HTTP输出流,并且置空ls_item以便下行数据   
for (i = 0; i < cl; i++)
{
if (i == (cl - 1))//最后一列,加n
{
ls_item += row[i].ToString() + "\n";
}
else
{
ls_item += row[i].ToString() + "\t";
}
}
resp.Write(ls_item);
ls_item = "";

}
resp.End();
}
#endregion

DataSet导出Excel,比以往的方法导出的Excel外观更加好看的更多相关文章

  1. 在IIS7上导出全部应用程序池的方法 批量域名绑定

    在IIS7+上导出全部应用程序池的方法: %windir%/system32/inetsrv/appcmd list apppool /config /xml > c:/apppools.xml ...

  2. 在IIS7上导出所有应用程序池的方法批量域名绑定

    在IIS7+上导出所有应用程序池的方法:%windir%/system32/inetsrv/appcmd list apppool /config /xml > c:/apppools.xml ...

  3. 在IIS7上导出所有应用程序池的方法批量域名绑定(网站绑定)

    资料来源: http://www.2cto.com/os/201410/341882.html 一点经验:导出配置文件后,建议打开看看,如果有需要调整的需要做修改. 在IIS7+上导出所有应用程序池的 ...

  4. 在IIS7上导出所有应用程序池的方法 批量域名绑定

    在IIS7+上导出所有应用程序池的方法:%windir%/system32/inetsrv/appcmd list apppool /config /xml > c:/apppools.xml  ...

  5. 在IIS7以上导出所有应用程序池的方法批量域名绑定(网站绑定)

    在IIS7+上导出所有应用程序池的方法: %windir%/system32/inetsrv/appcmd list apppool /config /xml > c:/apppools.xml ...

  6. DataGird导出EXCEL的几个方法

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

  7. ASP.NET导出EXCEl方法使用COM.EXCEL不使用EXCEl对象

    第一种:导出gridVIEW中的数据,用hansTABLE做离线表,将数据库中指定表中的所有数据按GRIDVIEW中绑定的ID导出 只能导出数据不能去操作相应的EXCEl表格,不能对EXCEL中的数据 ...

  8. delphi 导出到excel的7种方法

    本文来自 爱好者8888 的CSDN 博客 ,全文地址请点击:https://blog.csdn.net/kpc2000/article/details/17066823?utm_source=cop ...

  9. Delphi 导出数据至Excel的7种方法【转】

    一; delphi 快速导出excel   uses ComObj,clipbrd;   function ToExcel(sfilename:string; ADOQuery:TADOQuery): ...

随机推荐

  1. Java是什么?我们为什么要学习Java?

    Dear All: 首先请允许我为大家介绍下什么是Java?,我们为什么要学Java? 1.Java名字的由来 : Java名字的由来,实际上是一个有趣的故事,我们所见到的Java标志,总是一杯热咖啡 ...

  2. 爬虫学习(三)——get请求参数解析

    get请求:        用户输入搜索的内容,发送请求,将请求的内容保存起来.        get请求的本质是在地址栏中输入参数进行的一种请求方式. 解析参数使用urllib.parse impo ...

  3. Spring+ ApplicationListener

    有时候 需要在容器初始化完成后,加载些 代码字典或不常变的信息  放入缓存之类的,这里使用spring 初始化bean,并实例化 1.创建一个ApplicationListener类 import o ...

  4. MySQL - 表中某个状态字段的状态表示区分最好用数字,如status - [9999:失败,1111:成功]

    表中某个状态字段的状态表示区分最好用数字,如status - [9999:失败,1111:成功]

  5. 认识mysql(4)

    今日是MySQL的第四篇,难度会稍微加大,加油! 开始吧! 1.外键(foreign  key) 1.定义:让当前表字段的值在另一个表的范围内选择 2.语法: foreign key(参考字段名) r ...

  6. 通过rsync+inotify实现数据实时备份

    rsync的优点与不足 与传统的cp,scp,tar,备份方式相比,rsync具有安全性高备份迅速支持增量备份的优点,可以满足对实时性要求不高的需求,例如定期备份文件服务器数据到远端服务器,但是,当数 ...

  7. 老男孩Python全栈第2期+课件笔记【高清完整92天整套视频教程】

    点击了解更多Python课程>>> 老男孩Python全栈第2期+课件笔记[高清完整92天整套视频教程] 课程目录 ├─day01-python 全栈开发-基础篇 │ 01 pyth ...

  8. 菜鸟学Linux - 文件/文件夹的隐藏属性

    文件/文件夹居然还有隐藏属性?没错,隐藏属性对于文件/文件夹的安全很重要.好比如说,我们需要使用”鉴定符“来揭开装备的隐藏属性:在Linux中chattr/lsattr就是“鉴定符”. chattr基 ...

  9. 洛谷P1067 多项式输出

    题目链接:https://www.luogu.org/problemnew/show/P1067 这是一个纯模拟的小怪但是需要注意一些小细节: 1.首项为正没有+号. 2.所有项系数如果是一的话就省略 ...

  10. PostgreSQL 配置内存参数

    对于任何数据库软件,内存配置项都是很重要的配置项.在 PostgreSQL 主要有以下几个内存配置参数. shared_buffers: integer 类型,设置数据库服务器将使用的共享内存缓冲区数 ...