将GridView中的数据导出到Excel

满天星_星 2017-04-08 09:17:23
我想将GridView中的数据导出到Excel中,一个纯净的.xls文件。
我在网上搜到的方法实际上是导出了一个 html 格式文件再把文件名后缀欺骗性地写成了 .xls ,它将GridView中的格式都原样输出了。改怎么导出一个正真的表格?

下面是我的代码:
protected void Button2_Click(object sender, EventArgs e)
{

if (gvInfo.Rows.Count > 0)
{
//调用导出方法
ExportGridViewForUTF8(gvInfo, DateTime.Now.ToShortDateString() + ".xls");
}
else
{
// obo.Common.MessageBox.Show(this, "没有数据可导出,请先查询数据!");
}
}


private void ExportGridViewForUTF8(GridView GridView, string filename)
{

string attachment = "attachment; filename=" + filename;
Response.ClearContent();
Response.Buffer = true;
Response.AddHeader("content-disposition", attachment);
Response.Charset = "UTF-8";
Response.ContentEncoding = System.Text.Encoding.GetEncoding("UTF-8");
Response.ContentType = "application/ms-excel";
System.IO.StringWriter sw = new System.IO.StringWriter();
HtmlTextWriter htw = new HtmlTextWriter(sw);
GridView.RenderControl(htw);
Response.Output.Write(sw.ToString());
Response.Flush();
Response.End();

}

以下是我导出后的表格:
...全文
610 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
by_封爱 2017-04-10
  • 打赏
  • 举报
回复
LZ看这里吧.
  • 打赏
  • 举报
回复
引用 3 楼 sp1234 的回复:
使用各种(通用于桌面、winservice的)Office 互操作第三方框架,或者直接使用 Microsoft.Office.Interop.Excel。
LZ这都是拿来主义的 何必纠结? 使用 Microsoft.Office.Interop.Excel
  • 打赏
  • 举报
回复
引用 楼主 qq_32572689 的回复:
以下是我导出后的表格:
这种就是你说的“网页”导出,然后弄一个假的文件后缀名,让excel 再来打开这个网页。 真正地导出其实应该是这样的:它打开一个 excel 工作簿,然后遍历工作簿中的命名单元格(不是使用Excel坐标,而是使用单元格命名。不懂 Excel 的人是不理解这个概念的),根据命令来将数据一个一个地填入单元格,然后运行一下excel 工作簿的的所有预定义计算公式(这也是 Excel 专有的概念),最后另存工作簿到本地 excel 文件。 这才是导出过程。
  • 打赏
  • 举报
回复
不过 asp.net 上直接使用 Microsoft.Office.Interop.Excel 是不太对的,在 windows 2008 R2 以上服务器上,实际上是不支持跟 DCOM 很好地互操作的。你应该使用一个 winform 程序承载 Microsoft.Office.Interop.Excel 类库来操作 Excel,然后登录到服务器上启动这个桌面程序,再“锁定”windows(而不是注销)。如果你没有比较大的应用,则可以使用简单的第三方导出工具。 例如一个工作流系统需要在服务器端去给Excel 产生数据分组分析图表、动态调用其动态规划模型、动态设置其命名单元和单元锁定区域,动态地设置一些单元的事件和宏代码并保存到为特定用户产生的(从Excel模板复制的)工作簿中,等等,这算是稍微大一点的应用需求,这更专业一些,使用微软的类库直接对 Office 操作比较好。
  • 打赏
  • 举报
回复
使用各种(通用于桌面、winservice的)Office 互操作第三方框架,或者直接使用 Microsoft.Office.Interop.Excel。
满天星_星 2017-04-09
  • 打赏
  • 举报
回复
还是有格式额,怎么办呢?
满天星_星 2017-04-09
  • 打赏
  • 举报
回复
大神能不能直接给我来段代码参考参考,实在是理解不透啊

62,254

社区成员

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

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

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

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