找回密码
 立即注册

QQ登录

只需一步,快速开始

lgxl6925

初级会员

43

主题

130

帖子

397

积分

初级会员

积分
397

微信认证勋章

lgxl6925
初级会员   /  发表于:2016-5-16 08:47  /   查看:4162  /  回复:6
显示正常,导出报错:
保存文件中的错误d:\2016-05-06生产日况表.xls
错误行:
fpspread1.saveexcel(filename,farpoint.excel.excelsaveflags.noflagset);
在本地调试一切正常

6 个回复

倒序浏览
lgxl6925
初级会员   /  发表于:2016-5-16 08:55:03
沙发
Server Error in '/' Application.

保存文件中的错误d:\2016-05-05生产日况表.xls

Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code.

Exception Details: FarPoint.Excel.ExcelException: 保存文件中的错误d:\2016-05-05生产日况表.xls

Source Error:


Line 587:        
Line 588:        string filename = "d:\\"+TextBox1.Text+"生产日况表.xls";
Line 589:        FpSpread1.SaveExcel(filename, FarPoint.Excel.ExcelSaveFlags.NoFlagsSet);//导出到excel
Line 590:    }
Line 591:    protected void Button3_Click(object sender, EventArgs e)

Source File: d:\xxpt\scrkb\skbcx.aspx.cs    Line: 589

Stack Trace:


[ExcelException: 保存文件中的错误d:\2016-05-05生产日况表.xls]
   FarPoint.Excel.ExcelFileHandler.Save(String fileName, ExcelSaveFlags saveFlags, String password) +485
   cm.a(String A_0, ExcelSaveFlags A_1, String A_2) +72
   fu.a(String A_0, Stream A_1, ExcelSaveFlags A_2, ExcelWarningList A_3, String A_4) +213

[ApplicationException: 保存Excel文件时出错]
   fu.a(String A_0, Stream A_1, ExcelSaveFlags A_2, ExcelWarningList A_3, String A_4) +430
   FarPoint.Web.Spread.FpSpread.SaveExcel(String fileName, ExcelSaveFlags excelSaveFlags, ExcelWarningList warningList, String password) +178
   FarPoint.Web.Spread.FpSpread.SaveExcel(String fileName, ExcelSaveFlags excelSaveFlags) +38
   skbcx.Button2_Click(Object sender, EventArgs e) in d:\xxpt\scrkb\skbcx.aspx.cs:589
   System.Web.UI.WebControls.Button.OnClick(EventArgs e) +118
   System.Web.UI.WebControls.Button.RaisePostBackEvent(String eventArgument) +112
   System.Web.UI.WebControls.Button.System.Web.UI.IPostBackEventHandler.RaisePostBackEvent(String eventArgument) +10
   System.Web.UI.Page.RaisePostBackEvent(IPostBackEventHandler sourceControl, String eventArgument) +13
   System.Web.UI.Page.RaisePostBackEvent(NameValueCollection postData) +36
   System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +5563
回复 使用道具 举报
lgxl6925
初级会员   /  发表于:2016-5-16 10:59:59
板凳
检查发现:是权限问题。
之前理解错了,导出的excel只能导出在服务器上吗?不能导出在本地?
回复 使用道具 举报
dexteryao讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2016-5-16 14:12:26
地板
这里您理解可能有些问题,asp 服务器并没有权限访问本地文件磁盘,需要通过其他方式让用户下载。
导出到本地有两种方法,一种是保存到服务器上给用户一个链接,用户下载。
另一种是Response 返回 文件流用户直接下载

下面代码是其中一种方法作为参考。
  1. string fileName = "aaa.zip";//客户端保存的文件名
  2.   string filePath = Server.MapPath("DownLoad/aaa.zip");//路径
  3.   //以字符流的形式下载文件
  4.   FileStream fs = new FileStream(filePath, FileMode.Open);
  5.   byte[] bytes = new byte[(int)fs.Length];
  6.   fs.Read(bytes, 0, bytes.Length);
  7.   fs.Close();
  8.   Response.ContentType = "application/octet-stream";
  9.   //通知浏览器下载文件而不是打开
  10.   Response.AddHeader("Content-Disposition", "attachment; filename=" + HttpUtility.UrlEncode(fileName, System.Text.Encoding.UTF8));
  11.   Response.BinaryWrite(bytes);
  12.   Response.Flush();
  13.   Response.End();
复制代码
回复 使用道具 举报
dexteryao讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2016-5-16 14:21:04
5#
补充一下,spread有 SaveExcelToResponse 的方法,可以直接下载
回复 使用道具 举报
lgxl6925
初级会员   /  发表于:2016-5-16 15:10:11
6#
谢谢,保存后下载已解决。
再: SaveExcelToResponse 的参数怎么设?
回复 使用道具 举报
dexteryao讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2016-5-16 15:47:48
7#
和saveExcel一样,fileName是文件名,不是路径。
  1.         public bool SaveExcelToResponse();
  2.         public bool SaveExcelToResponse(string fileName);
  3.         public bool SaveExcelToResponse(string fileName, string password);
  4.         public bool SaveExcelToResponse(string fileName, ExcelSaveFlags flag);
  5.         public bool SaveExcelToResponse(string fileName, ExcelSaveFlags flag, string password);
复制代码
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部