不生成Excel文件,将Datatable数据 Response.write 输出生成Excel (转载)
2010-11-27 11:07
337 查看
不生成Excel文件,将Datatable数据 Response.write 输出生成Excel using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Text;
namespace ExeclSaveAS
{
public partial class _Default : System.Web.UI.Page
{
//可以输出到Excel,并显示正确。但是会有错误提示信息。不知哪位高手有无办法解决?
protected void Page_Load(object sender, EventArgs e)
{
//ShowExecl();//提示三次
DataTable1Excel();//只提示一次
}
private void ShowExecl()
{
DataTable dt = GetDataSource();
Response.Charset = "UTF-8";
Response.ContentEncoding = System.Text.Encoding.UTF8;
Response.AppendHeader("Content-Disposition", "attachment;filename=ccc_mys.xls");
Response.ContentType = "application/ms-excel";
string colHeaders = "", ls_item = "";
//定义表对象与行对象,同时用DataSet对其值进行初始化
DataRow[] myRow = dt.Select();//可以类似dt.Select("id>10")之形式达到数据筛选目的
int i = 0;
int cl = dt.Columns.Count;
//取得数据表各列标题,各标题之间以t分割,最后一个列标题后加回车符
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);
Response.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";
}
}
Response.Write(ls_item);
ls_item = "";
}
Response.Flush();
Response.End();
}
/// <summary>
/// 数据源(这里给的数据源是一个Datatable )
/// </summary>
/// <returns></returns>
private DataTable GetDataSource()
{
DataTable newdata = new DataTable();
newdata.Columns.Add("ID");
newdata.Columns.Add("Name");
object [] OneRowValue=new object []{"1","AAAA"};
object[] TwoRowValue = new object[] { "2", "BBBBB" };
newdata.Rows.Add(OneRowValue);
newdata.Rows.Add(TwoRowValue);
return newdata;
}
/// <summary>
/// 只提示一次
/// </summary>
public void DataTable1Excel()
{
DataTable dtData = GetDataSource();
System.Web.UI.WebControls.GridView gvExport = null;
// 当前对话
System.Web.HttpContext curContext = System.Web.HttpContext.Current;
// IO用于导出并返回excel文件
System.IO.StringWriter strWriter = null;
System.Web.UI.HtmlTextWriter htmlWriter = null;
if (dtData != null)
{
// 设置编码和附件格式
curContext.Response.ContentType = "application/vnd.ms-excel";
curContext.Response.ContentEncoding = System.Text.Encoding.UTF8;
curContext.Response.Charset = "utf-8";
// 导出excel文件
strWriter = new System.IO.StringWriter();
htmlWriter = new System.Web.UI.HtmlTextWriter(strWriter);
// 为了解决gvData中可能进行了分页的情况,需要重新定义一个无分页的GridView
gvExport = new System.Web.UI.WebControls.GridView();
gvExport.DataSource = dtData.DefaultView;
gvExport.AllowPaging = true;
gvExport.DataBind();
// 返回客户端
gvExport.RenderControl(htmlWriter);
curContext.Response.Write("<meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\" />" + strWriter.ToString());
curContext.Response.End();
}
}
}
}
转自:http://apps.hi.baidu.com/share/detail/14263621
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Text;
namespace ExeclSaveAS
{
public partial class _Default : System.Web.UI.Page
{
//可以输出到Excel,并显示正确。但是会有错误提示信息。不知哪位高手有无办法解决?
protected void Page_Load(object sender, EventArgs e)
{
//ShowExecl();//提示三次
DataTable1Excel();//只提示一次
}
private void ShowExecl()
{
DataTable dt = GetDataSource();
Response.Charset = "UTF-8";
Response.ContentEncoding = System.Text.Encoding.UTF8;
Response.AppendHeader("Content-Disposition", "attachment;filename=ccc_mys.xls");
Response.ContentType = "application/ms-excel";
string colHeaders = "", ls_item = "";
//定义表对象与行对象,同时用DataSet对其值进行初始化
DataRow[] myRow = dt.Select();//可以类似dt.Select("id>10")之形式达到数据筛选目的
int i = 0;
int cl = dt.Columns.Count;
//取得数据表各列标题,各标题之间以t分割,最后一个列标题后加回车符
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);
Response.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";
}
}
Response.Write(ls_item);
ls_item = "";
}
Response.Flush();
Response.End();
}
/// <summary>
/// 数据源(这里给的数据源是一个Datatable )
/// </summary>
/// <returns></returns>
private DataTable GetDataSource()
{
DataTable newdata = new DataTable();
newdata.Columns.Add("ID");
newdata.Columns.Add("Name");
object [] OneRowValue=new object []{"1","AAAA"};
object[] TwoRowValue = new object[] { "2", "BBBBB" };
newdata.Rows.Add(OneRowValue);
newdata.Rows.Add(TwoRowValue);
return newdata;
}
/// <summary>
/// 只提示一次
/// </summary>
public void DataTable1Excel()
{
DataTable dtData = GetDataSource();
System.Web.UI.WebControls.GridView gvExport = null;
// 当前对话
System.Web.HttpContext curContext = System.Web.HttpContext.Current;
// IO用于导出并返回excel文件
System.IO.StringWriter strWriter = null;
System.Web.UI.HtmlTextWriter htmlWriter = null;
if (dtData != null)
{
// 设置编码和附件格式
curContext.Response.ContentType = "application/vnd.ms-excel";
curContext.Response.ContentEncoding = System.Text.Encoding.UTF8;
curContext.Response.Charset = "utf-8";
// 导出excel文件
strWriter = new System.IO.StringWriter();
htmlWriter = new System.Web.UI.HtmlTextWriter(strWriter);
// 为了解决gvData中可能进行了分页的情况,需要重新定义一个无分页的GridView
gvExport = new System.Web.UI.WebControls.GridView();
gvExport.DataSource = dtData.DefaultView;
gvExport.AllowPaging = true;
gvExport.DataBind();
// 返回客户端
gvExport.RenderControl(htmlWriter);
curContext.Response.Write("<meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\" />" + strWriter.ToString());
curContext.Response.End();
}
}
}
}
转自:http://apps.hi.baidu.com/share/detail/14263621
相关文章推荐
- 不生成Excel文件,将Datatable数据 Response.write 输出生成Excel (转载)
- Net使用Microsoft.Office.Interop.Excel;创建Excel文件(插入数据、修改格式、生成图表)的方法,以及Excel查看加密
- C#输出DataTable数据到Excel文件
- C# 将内存中的datatable数据导出为Excel(方法一,以文件流方式导出)【转载】
- 转载:ASP.NET中上传并读取Excel文件数据,附后生成EXCEL及杀掉EXCEL进程。
- C# 将内存中的datatable数据导出为Excel(方法二,创建Excel对象导出)【转载】
- Response.Write("Sucess!!")不能输出数据的解决方法
- asp.net 生成导出word表单 ,导出excel; dataTable生成xls文件,返回前台下载;asp.net启动excel错误 80070005;excel-xls columnName 不能改变; 读写excel的开源利器NPOI; 设置excel Cell的数据类型;
- POI3.10读取Excel模板填充数据后生成新的Excel文件
- 通过response的write留输出数据的问题
- C# DataTable数据导入Excel数据【转载经过本人测试修改】
- Html Table用JS导出excel格式问题 导出EXCEL后单元格里的000412341234会变成412341234 7-14 会变成 2018-7-14(7月14) 自定义格式 web利用table表格生成excel格式问题 js导出excel增加表头、mso-number-format定义数据格式 数字输出格式转换 mso-number-format:"\@"
- 通过Response.write输出Excel时,乱码
- NPOI 2.1.1 系列(2) 使用NPOI读取List或者datatable数据生成 Excel文档 ;Npoi生成 xlsx 2007以上文档
- c# 把数据表DataTable 导出到Excel
- (2) 如何用Apache POI操作Excel文件-----如何在已有的Excel文件中插入一行新的数据?
- response的OutputStream输出数据
- ASP.NET中将数据输出到Excel
- response通过writer输出数据
- PHPExcel生成或读取excel文件