如何将gridview的数据导到Excel表格里?

zld_baggio 2009-07-11 02:02:45
如何将gridview的数据导到Excel表格里?如果有比较完善的代码最好,不胜感激!!!
...全文
161 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
觉v醒 2009-07-13
  • 打赏
  • 举报
回复

//导出方法
public void ExpertControl(System.Web.UI.Control source, string doctype, string docName)
{

Response.Clear();
Response.Buffer = true;
Response.Charset = "GB2312";
Response.ContentEncoding = Encoding.UTF8;
//设置Http的头信息,编码格式
if (doctype == "excel")
{
//Excel
Response.AppendHeader("Content-Disposition", "attachment;filename=" + HttpUtility.UrlEncode(docName, System.Text.Encoding.UTF8) + ".xls");
Response.ContentType = "application/ms-excel";
}
if (doctype == "word")
{
//Word
Response.AppendHeader("Content-Disposition", "attachment;filename=" + HttpUtility.UrlEncode(docName, System.Text.Encoding.UTF8) + ".doc");
Response.ContentType = "application/ms-word";
}
//关闭控件的视图状态
source.Page.EnableViewState = false;
//初始化HtmlWriter
StringWriter writer = new StringWriter();
HtmlTextWriter htmlWriter = new HtmlTextWriter(writer);
source.RenderControl(htmlWriter);
//输出
Response.Write(writer.ToString());
Response.End();
}


source 可以是div gridview table等 把控件的id传进去就行了
c168ylf 2009-07-13
  • 打赏
  • 举报
回复
百度一下
zld_baggio 2009-07-12
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 chen_ya_ping 的回复:]
六七百列好多啊。
[/Quote]

是呀,根据单位领导的要求,可以实现,但是打印遇到了上面说的问

题了。那位大侠可以帮助我解决呀!!!
chen_ya_ping 2009-07-12
  • 打赏
  • 举报
回复
六七百列好多啊。
zld_baggio 2009-07-12
  • 打赏
  • 举报
回复
各位好像没看明白我的意思,我的意思是,我的gridview表格有六七百列,而excel只能容纳

256列,如果直接导入到excel里面,会出现数据丢失的现象,只能显示前256列的内容,我想知道

如何解决如果要导入的表格的列多于excel最大可容纳的列的话该如何解决!!!

lawbc 2009-07-12
  • 打赏
  • 举报
回复
到处excel差不多有2种方法吧
一是获取DataSource然后读取数据
二是用RenderControl方法

代码楼上各位都有了
xuezhanliang6886 2009-07-12
  • 打赏
  • 举报
回复
if (mytable.Rows.Count == 0)//mytable是一个DataTable,也可用DataSet,就是绑定GridView的数据集
{
this.Button1.Enabled = false;
return;
}
System.Web.UI.WebControls.GridView dgExport = null;
// IO用于导出并返回excel文件
System.IO.StringWriter strWriter = null;
System.Web.UI.HtmlTextWriter htmlWriter = null;

if (mytable != null)
{
// 设置编码和附件格式
Response.ContentType = "application nd.ms-excel";
Response.AppendHeader("Content-Disposition", "attachment;filename=Borrow.xls");
Response.Charset = "";
Response.ContentEncoding = System.Text.Encoding.UTF8;

// 导出excel文件
strWriter = new System.IO.StringWriter();
htmlWriter = new System.Web.UI.HtmlTextWriter(strWriter);

// 为了解决dgData中可能进行了分页的情况,需要重新定义一个无分页的DataGrid
dgExport = new System.Web.UI.WebControls.DataGrid();
dgExport.DataSource = mytable.DefaultView;
dgExport.AllowPaging = false;
dgExport.DataBind();

// 返回客户端
dgExport.RenderControl(htmlWriter);
Response.Write(strWriter.ToString());
Response.End();
}

zld_baggio 2009-07-12
  • 打赏
  • 举报
回复
如果需要导入的数据超过了excel的规定的长度的话,数据就会丢失,或者显示出来的

都是不正常的,这样的话怎么办呢?
vivian_lanlan 2009-07-11
  • 打赏
  • 举报
回复
void SaveToExcel(DataTable objTable) ---接收一个dataTable
{
int CountR = objTable.Rows.Count;//行数
int CountC = objTable.Columns.Count;//列数
HttpContext.Current.Response.Clear();
HttpContext.Current.Response.Buffer = true;

string name = "lzjbook" + DateTime.Now.ToString("yyMMddhhmmss") + ".xls";

//设置Http的头信息,编码格式
HttpContext.Current.Response.AppendHeader("Content-Disposition", "attachment;filename=" + HttpContext.Current.Server.UrlEncode(name));
HttpContext.Current.Response.ContentType = "application/vnd.ms-excel";


//设置编码
HttpContext.Current.Response.Charset = "GB2312";
HttpContext.Current.Response.ContentEncoding = System.Text.Encoding.GetEncoding("GB2312");



//写表头
for (int i = 0; i < CountC; i++)
{
HttpContext.Current.Response.Write(objTable.Columns[i].ColumnName + "\t");
}
HttpContext.Current.Response.Write("\n");
//写表内容
for (int RowNo = 0; RowNo <= CountR - 1; RowNo++)
{
string RowContent = "";
for (int CloumnNo = 0; CloumnNo <= CountC - 1; CloumnNo++)
{
RowContent += Convert.ToString(objTable.Rows[RowNo][CloumnNo]) + "\t";
}
RowContent += "\n";
HttpContext.Current.Response.Write(RowContent);
}
HttpContext.Current.Response.Flush();
HttpContext.Current.Response.Close();
HttpContext.Current.ApplicationInstance.CompleteRequest();
#endregion

}
chen_ya_ping 2009-07-11
  • 打赏
  • 举报
回复
cnblogs上有好多这方面的文章。楼主可以去搜索一下。
insus 2009-07-11
  • 打赏
  • 举报
回复
dengchenlu 2009-07-11
  • 打赏
  • 举报
回复

if (mytable.Rows.Count == 0)//mytable是一个DataTable,也可用DataSet,就是绑定GridView的数据集
{
this.Button1.Enabled = false;
return;
}
System.Web.UI.WebControls.GridView dgExport = null;
// IO用于导出并返回excel文件
System.IO.StringWriter strWriter = null;
System.Web.UI.HtmlTextWriter htmlWriter = null;

if (mytable != null)
{
// 设置编码和附件格式
Response.ContentType = "application nd.ms-excel";
Response.AppendHeader("Content-Disposition", "attachment;filename=Borrow.xls");
Response.Charset = "";
Response.ContentEncoding = System.Text.Encoding.UTF8;

// 导出excel文件
strWriter = new System.IO.StringWriter();
htmlWriter = new System.Web.UI.HtmlTextWriter(strWriter);

// 为了解决dgData中可能进行了分页的情况,需要重新定义一个无分页的DataGrid
dgExport = new System.Web.UI.WebControls.DataGrid();
dgExport.DataSource = mytable.DefaultView;
dgExport.AllowPaging = false;
dgExport.DataBind();

// 返回客户端
dgExport.RenderControl(htmlWriter);
Response.Write(strWriter.ToString());
Response.End();
}

62,074

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧