asp.net导出cvs、excel文件问题

睿智天成 2013-10-23 03:50:43
做一个excel导出功能,在本地vs功能浏览的时候可以出现效果,但是发布到服务器上面点击无反应。先说明一下代码情况,采用jquery Ui 新建一个aspx页面里面放了一个超连接,点击后调用js方法跳转到另一个空页面(也是aspx页面),然后建datatable导出文件,下面是代码

#region 导出csv
public void ExportToSvc(System.Data.DataTable dt, string strName)
{
string strPath = Path.GetTempPath() + strName + ".csv";

if (File.Exists(strPath))
{
File.Delete(strPath);
}
//先打印标头
StringBuilder strColu = new StringBuilder();
StringBuilder strValue = new StringBuilder();
int i = 0;
try
{
StreamWriter sw = new StreamWriter(new FileStream(strPath, FileMode.CreateNew), Encoding.GetEncoding("GB2312"));

for (i = 0; i <= dt.Columns.Count - 1; i++)
{
strColu.Append(dt.Columns[i].ColumnName);
strColu.Append(",");
}
strColu.Remove(strColu.Length - 1, 1);//移出掉最后一个,字符

sw.WriteLine(strColu);

foreach (DataRow dr in dt.Rows)
{
strValue.Remove(0, strValue.Length);//移出
for (i = 0; i <= dt.Columns.Count - 1; i++)
{
strValue.Append(dr[i].ToString());
strValue.Append(",");
}
strValue.Remove(strValue.Length - 1, 1);//移出掉最后一个,字符
sw.WriteLine(strValue);
}

sw.Close();
System.Diagnostics.Process.Start(strPath);
Response.Write("导出成功!" + strPath);
}
catch (Exception ex)
{
ex.ToString();
Response.Write("导出失败!" + ex.ToString());
}
}
#endregion
...全文
661 11 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
vastlyconsider 2013-11-22
  • 打赏
  • 举报
回复
引用 10 楼 Rexmax 的回复:
没人会弄吗?
现在这样有2中方法可以弄: 1.将数据流导出用excel的形式保存在服务器端,然后通过下载的方式给客户端(这样比较麻烦,但是不会出现你上面所说的问题) 2.另一个就是将你的查询条件通过js发送到后台,查询出数据来,保存成tadatable,然后导出(详细方法可以在网上找datatable导出excel)。 希望采纳我的意见!!!
帆歌 2013-10-24
  • 打赏
  • 举报
回复
http://download.csdn.net/download/wufan0913/4187105 写Excle+的XML格式
  • 打赏
  • 举报
回复
System.IO.DirectoryInfo di = new System.IO.DirectoryInfo(dir); 然后 System.IO.StreamWriter sw = null; sw.Write("<table>");
hanqing_liu 2013-10-24
  • 打赏
  • 举报
回复
// 设置编码和附件格式 HttpContext.Response.ContentType = "application/vnd.ms-excel"; HttpContext.Response.ContentEncoding = Encoding.UTF8; HttpContext.Response.Charset = ""; HttpContext.Response.AppendHeader("Content-Disposition", "attachment;filename=" + HttpUtility.UrlEncode("IT需求分析-软件需求完成报表.xls", Encoding.UTF8)); System.IO.MemoryStream ms = workbook.SaveToStream(); HttpContext.Response.BinaryWrite(ms.GetBuffer());
myhope88 2013-10-24
  • 打赏
  • 举报
回复
这样只能在服务器上面导出吧?
睿智天成 2013-10-24
  • 打赏
  • 举报
回复
引用 3 楼 qiujialongjjj 的回复:
楼主这是网上的代码吧,这样导出效率很低的
我现在只是想先实现功能,谁写过juqery ui 里面的excel导出
睿智天成 2013-10-24
  • 打赏
  • 举报
回复
没人会弄吗?
睿智天成 2013-10-24
  • 打赏
  • 举报
回复
我要的不是你们说的这种,现在的问题是我用的框架是jquery esayui 里面无法在后面写点击时间只能通过js跳转到aspx页面执行里面的Page_Load里面写的自定义方法,问题就出现了,每次都无法将导出的问题保存在客户端,也不知道怎么将数据流发送到客户端让用户保存下载。
风一样的大叔 2013-10-23
  • 打赏
  • 举报
回复
楼主这是网上的代码吧,这样导出效率很低的
睿智天成 2013-10-23
  • 打赏
  • 举报
回复
引用 1 楼 feiyun0112 的回复:
System.Diagnostics.Process.Start(strPath); 你这是在服务器端打开呀,记住这是后台代码 ***************************************************************************** 签名档: http://feiyun0112.cnblogs.com/
上面贴出来的代码是在新建的aspx页面的Page_Load事件里面执行的,前面的都执行了就是执行System.Diagnostics.Process.Start(strPath); 的时候无反应
feiyun0112 2013-10-23
  • 打赏
  • 举报
回复
System.Diagnostics.Process.Start(strPath);

你这是在服务器端打开呀,记住这是后台代码

*****************************************************************************
签名档: http://feiyun0112.cnblogs.com/

62,243

社区成员

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

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

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

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