我在用c#生成Excel时出现如下错误:
无法访问文件。请尝试下列方法之一:• 确认所指定的文件夹已存在。
• 确认文件所在的文件夹不是只读的。
• 确认给出的文件名不包含下列字符: < > ? [ ] : 大队测井、试井、仪表检定结算情况统计表.xls 或 * 。
• 确认文件/路径名长度不超过 218 个字符。
说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。 异常详细信息: System.Runtime.InteropServices.COMException: 无法访问文件。请尝试下列方法之一:• 确认所指定的文件夹已存在。
• 确认文件所在的文件夹不是只读的。
• 确认给出的文件名不包含下列字符: < > ? [ ] : 大队测井、试井、仪表检定结算情况统计表.xls 或 * 。
• 确认文件/路径名长度不超过 218 个字符。源错误:
行 656: catch (Exception theException)
行 657: {
行 658: throw theException;
行 659: }
行 660: finally
源文件: e:\cs\work\SCJH\App_Code\Print\ddjsPrint.cs 行: 658 堆栈跟踪:
[COMException (0x800a03ec): 无法访问文件。请尝试下列方法之一:• 确认所指定的文件夹已存在。
• 确认文件所在的文件夹不是只读的。
• 确认给出的文件名不包含下列字符: < > ? [ ] : 大队测井、试井、仪表检定结算情况统计表.xls 或 * 。
• 确认文件/路径名长度不超过 218 个字符。]
ddjsPrint.SendExcel(Page page, String excelname) in e:\cs\work\SCJH\App_Code\Print\ddjsPrint.cs:658
PrintBussiness.ddjs(Page page, Int32 year, Int32 month, Int32 did, Int32 quarter, Int32 jihuayue) in e:\cs\work\SCJH\App_Code\Print\PrintBussiness.cs:469
jiesuan_Print.GridView2_SelectedIndexChanged(Object sender, EventArgs e) in e:\cs\work\SCJH\jiesuan\Print.aspx.cs:53
System.Web.UI.WebControls.GridView.OnSelectedIndexChanged(EventArgs e) +105
System.Web.UI.WebControls.GridView.HandleSelect(Int32 rowIndex) +89
System.Web.UI.WebControls.GridView.HandleEvent(EventArgs e, Boolean causesValidation, String validationGroup) +221
System.Web.UI.WebControls.GridView.OnBubbleEvent(Object source, EventArgs e) +95
System.Web.UI.Control.RaiseBubbleEvent(Object source, EventArgs args) +35
System.Web.UI.WebControls.GridViewRow.OnBubbleEvent(Object source, EventArgs e) +117
System.Web.UI.Control.RaiseBubbleEvent(Object source, EventArgs args) +35
System.Web.UI.WebControls.ImageButton.OnCommand(CommandEventArgs e) +115
System.Web.UI.WebControls.ImageButton.RaisePostBackEvent(String eventArgument) +171
System.Web.UI.WebControls.ImageButton.System.Web.UI.IPostBackEventHandler.RaisePostBackEvent(String eventArgument) +7
System.Web.UI.Page.RaisePostBackEvent(IPostBackEventHandler sourceControl, String eventArgument) +11
System.Web.UI.Page.RaisePostBackEvent(NameValueCollection postData) +33
System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +5102
--------------------------------------------------------------------------------
版本信息: Microsoft .NET Framework 版本:2.0.50727.832; ASP.NET 版本:2.0.50727.832
这是什么原因,在网上找了好长时间都没找到合适的解决方案,Dcom已经配置好了,而且别的系统用的代码和这个类似,但是没有出现这个错误,没看出这两个系统代码有什么区别???代码:
excel.Visible = false;
//excel.DisplayAlerts = false;//在服务器端不显示保存对话框
这句有异常
xBk.SaveCopyAs(page.Server.MapPath("Reports\\" + excelname + ".xls"));//将excel文件存储到指定位置
string path = page.Server.MapPath("Reports\\" + excelname + ".xls");
System.IO.FileInfo file = new System.IO.FileInfo(path);
page.Response.Clear();
page.Response.Charset = "GB2312";
page.Response.ContentEncoding = System.Text.Encoding.UTF8;
// 添加头信息,为"文件下载/另存为"对话框指定默认文件名
page.Response.AddHeader("Content-Disposition", "attachment; filename=" + page.Server.UrlEncode(file.Name));
// 添加头信息,指定文件大小,让浏览器能够显示下载进度
page.Response.AddHeader("Content-Length", file.Length.ToString()); // 指定返回的是一个不能被客户端读取的流,必须被下载
page.Response.ContentType = "application/ms-excel"; // 把文件流发送到客户端
page.Response.WriteFile(file.FullName);
// 停止页面的执行 page.Response.End
无法访问文件。请尝试下列方法之一:• 确认所指定的文件夹已存在。
• 确认文件所在的文件夹不是只读的。
• 确认给出的文件名不包含下列字符: < > ? [ ] : 大队测井、试井、仪表检定结算情况统计表.xls 或 * 。
• 确认文件/路径名长度不超过 218 个字符。
说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。 异常详细信息: System.Runtime.InteropServices.COMException: 无法访问文件。请尝试下列方法之一:• 确认所指定的文件夹已存在。
• 确认文件所在的文件夹不是只读的。
• 确认给出的文件名不包含下列字符: < > ? [ ] : 大队测井、试井、仪表检定结算情况统计表.xls 或 * 。
• 确认文件/路径名长度不超过 218 个字符。源错误:
行 656: catch (Exception theException)
行 657: {
行 658: throw theException;
行 659: }
行 660: finally
源文件: e:\cs\work\SCJH\App_Code\Print\ddjsPrint.cs 行: 658 堆栈跟踪:
[COMException (0x800a03ec): 无法访问文件。请尝试下列方法之一:• 确认所指定的文件夹已存在。
• 确认文件所在的文件夹不是只读的。
• 确认给出的文件名不包含下列字符: < > ? [ ] : 大队测井、试井、仪表检定结算情况统计表.xls 或 * 。
• 确认文件/路径名长度不超过 218 个字符。]
ddjsPrint.SendExcel(Page page, String excelname) in e:\cs\work\SCJH\App_Code\Print\ddjsPrint.cs:658
PrintBussiness.ddjs(Page page, Int32 year, Int32 month, Int32 did, Int32 quarter, Int32 jihuayue) in e:\cs\work\SCJH\App_Code\Print\PrintBussiness.cs:469
jiesuan_Print.GridView2_SelectedIndexChanged(Object sender, EventArgs e) in e:\cs\work\SCJH\jiesuan\Print.aspx.cs:53
System.Web.UI.WebControls.GridView.OnSelectedIndexChanged(EventArgs e) +105
System.Web.UI.WebControls.GridView.HandleSelect(Int32 rowIndex) +89
System.Web.UI.WebControls.GridView.HandleEvent(EventArgs e, Boolean causesValidation, String validationGroup) +221
System.Web.UI.WebControls.GridView.OnBubbleEvent(Object source, EventArgs e) +95
System.Web.UI.Control.RaiseBubbleEvent(Object source, EventArgs args) +35
System.Web.UI.WebControls.GridViewRow.OnBubbleEvent(Object source, EventArgs e) +117
System.Web.UI.Control.RaiseBubbleEvent(Object source, EventArgs args) +35
System.Web.UI.WebControls.ImageButton.OnCommand(CommandEventArgs e) +115
System.Web.UI.WebControls.ImageButton.RaisePostBackEvent(String eventArgument) +171
System.Web.UI.WebControls.ImageButton.System.Web.UI.IPostBackEventHandler.RaisePostBackEvent(String eventArgument) +7
System.Web.UI.Page.RaisePostBackEvent(IPostBackEventHandler sourceControl, String eventArgument) +11
System.Web.UI.Page.RaisePostBackEvent(NameValueCollection postData) +33
System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +5102
--------------------------------------------------------------------------------
版本信息: Microsoft .NET Framework 版本:2.0.50727.832; ASP.NET 版本:2.0.50727.832
这是什么原因,在网上找了好长时间都没找到合适的解决方案,Dcom已经配置好了,而且别的系统用的代码和这个类似,但是没有出现这个错误,没看出这两个系统代码有什么区别???代码:
excel.Visible = false;
//excel.DisplayAlerts = false;//在服务器端不显示保存对话框
这句有异常
xBk.SaveCopyAs(page.Server.MapPath("Reports\\" + excelname + ".xls"));//将excel文件存储到指定位置
string path = page.Server.MapPath("Reports\\" + excelname + ".xls");
System.IO.FileInfo file = new System.IO.FileInfo(path);
page.Response.Clear();
page.Response.Charset = "GB2312";
page.Response.ContentEncoding = System.Text.Encoding.UTF8;
// 添加头信息,为"文件下载/另存为"对话框指定默认文件名
page.Response.AddHeader("Content-Disposition", "attachment; filename=" + page.Server.UrlEncode(file.Name));
// 添加头信息,指定文件大小,让浏览器能够显示下载进度
page.Response.AddHeader("Content-Length", file.Length.ToString()); // 指定返回的是一个不能被客户端读取的流,必须被下载
page.Response.ContentType = "application/ms-excel"; // 把文件流发送到客户端
page.Response.WriteFile(file.FullName);
// 停止页面的执行 page.Response.End
解决方案 »
- 一个换行问题
- Context.Handler; 提示无法转换类型
- 请教一个问题 伪静态问题
- 看了一篇文章关于Server.Transfer传值。 有问题请教
- .doc 和.rar 的文件上传的问题,急,帮帮忙,谢谢了..
- Repeater 能不能第一条显示图片,其他的不显示图片
- DataGrid如果用完了按钮事件可是还不够用如何添加
- 关于ASP.NET 表格输出加风格加数据库,实在太麻烦了,请大家指点!
- 讨论:关于ASP.net中的Singleton
- 帮我看看这段代码那儿有问题,为什么实现不了翻页?
- 如何用.net 程序实现数据库的 定时 备份?
- [附代码]asp.net实现在线打开,以及保存Excel的功能?有些问题,请指教
http://topic.csdn.net/u/20080104/17/5be39aff-07ef-464b-8d62-e27651a9330a.html
using System.Data;
using System.Configuration;
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.IO;public partial class _Default : System.Web.UI.Page
{
//若要在05中使用GridView导出文件,必须重载此方法
public override void VerifyRenderingInServerForm(Control control)
{
//base.VerifyRenderingInServerForm(control);
}
protected void Page_Load(object sender, EventArgs e)
{
}
/// <summary>
/// 导出文件的方法
/// </summary>
/// <param name="Model">Model为1时,则导出Excel格式,为2时则导出Word格式</param>
private void ToFile(int Model)
{
Response.Clear();
Response.Buffer = true;
Response.Charset = "GB2312";
// 如果设置为 GetEncoding("GB2312");导出的文件将会出现乱码!!!
Response.ContentEncoding = System.Text.Encoding.UTF8;
if(Model==1)
{
Response.AppendHeader("Content-Disposition", "attachment;filename=FileName.doc");
Response.ContentType = "application/ms-word";//设置输出文件类型为Word文件。
}
else
{
Response.AppendHeader("Content-Disposition", "attachment;filename=FileName.xls");
Response.ContentType = "application/ms-excel";//设置输出文件类型为excel文件。
}
System.IO.StringWriter oStringWriter = new System.IO.StringWriter();
System.Web.UI.HtmlTextWriter oHtmlTextWriter = new System.Web.UI.HtmlTextWriter(oStringWriter);
this.GridView1.RenderControl(oHtmlTextWriter);
Response.Output.Write(oStringWriter.ToString());
Response.Flush();
Response.End(); }
protected void Button1_Click(object sender, EventArgs e)
{
ToFile(1);
}
protected void Button2_Click(object sender, EventArgs e)
{
ToFile(2);
}
}