本人在Server端想生成一个Excel文件,结果在保存中SaveAs的时候出错,请大家帮忙看看,谢谢!(office 2003下正常,office2000 和 office2002下出错)部分代码如下:
string strCurrentDir = Server.MapPath(".") + "\\";
string strLinkDir=strCurrentDir.Substring(strCurrentDir.IndexOf("wwwroot")+7);
oXL = new Excel.Application();
oXL.Visible = false;
oWB = (Excel._Workbook)(oXL.Workbooks.Add( Missing.Value ));
oSheet = (Excel._Worksheet)oWB.ActiveSheet;
。填充数据。
oWB.SaveAs(strCurrentDir + strFile,Excel.XlFileFormat.xlWorkbookNormal,null,null,false,false,Excel.XlSaveAsAccessMode.xlExclusive,false,false,null,null);错误提示为:"System.Runtime.InteropServices.COMException (0x800A03EC): Microsoft Excel 不能访问文件“C:\\inetpub\\wwwroot\\InputData”。 可能原因有:\n\n* 指定的文档名称或路径不存在。\n* 所要打开的文档被其他程序占用。切换到相应程序,关闭文档后再试。\n* 所要保存的工作簿的名称与另一个只读文档同名。请用其他名称保存文档。\r\n at Excel.WorkbookClass.SaveAs(Object Filename, Object FileFormat, Object Password, Object WriteResPassword, Object ReadOnlyRecommended, Object CreateBackup, XlSaveAsAccessMode AccessMode, Object ConflictResolution, Object AddToMru, Object TextCodepage, Object TextVisualLayout)\r\n at InputData.Opr14.btnprint_Click(Object sender, EventArgs e) in c:\\inetpub\\wwwroot\\inputdata\\opr14.aspx.cs:line 337"
请帮忙看看啊,我急啊,正在客户这边调试出现这个现象,郁闷,哪位大虾赶紧帮帮忙,小弟不胜感激!!!
string strCurrentDir = Server.MapPath(".") + "\\";
string strLinkDir=strCurrentDir.Substring(strCurrentDir.IndexOf("wwwroot")+7);
oXL = new Excel.Application();
oXL.Visible = false;
oWB = (Excel._Workbook)(oXL.Workbooks.Add( Missing.Value ));
oSheet = (Excel._Worksheet)oWB.ActiveSheet;
。填充数据。
oWB.SaveAs(strCurrentDir + strFile,Excel.XlFileFormat.xlWorkbookNormal,null,null,false,false,Excel.XlSaveAsAccessMode.xlExclusive,false,false,null,null);错误提示为:"System.Runtime.InteropServices.COMException (0x800A03EC): Microsoft Excel 不能访问文件“C:\\inetpub\\wwwroot\\InputData”。 可能原因有:\n\n* 指定的文档名称或路径不存在。\n* 所要打开的文档被其他程序占用。切换到相应程序,关闭文档后再试。\n* 所要保存的工作簿的名称与另一个只读文档同名。请用其他名称保存文档。\r\n at Excel.WorkbookClass.SaveAs(Object Filename, Object FileFormat, Object Password, Object WriteResPassword, Object ReadOnlyRecommended, Object CreateBackup, XlSaveAsAccessMode AccessMode, Object ConflictResolution, Object AddToMru, Object TextCodepage, Object TextVisualLayout)\r\n at InputData.Opr14.btnprint_Click(Object sender, EventArgs e) in c:\\inetpub\\wwwroot\\inputdata\\opr14.aspx.cs:line 337"
请帮忙看看啊,我急啊,正在客户这边调试出现这个现象,郁闷,哪位大虾赶紧帮帮忙,小弟不胜感激!!!
可能原因有:
* 指定的文档名称或路径不存在。
* 所要打开的文档被其他程序占用。切换到相应程序,关闭文档后再试。
* 所要保存的工作簿的名称与另一个只读文档同名。请用其他名称保存文档。
------------------------------------------------------------------
确保excel文件存在,并且aspnet用户对它有写入权限。查看一下是否已经有别的用户已经打开该excel文件了。
Response.Buffer= true;
Response.Charset="GB2312";
Response.AppendHeader("Content-Disposition","attachment;filename=Account.xls");
Response.ContentEncoding=System.Text.Encoding.UTF8;//设置输出流为简体中文
Response.ContentType = "application/ms-excel";//设置输出文件类
this.EnableViewState = false;
System.Globalization.CultureInfo myCItrad = new System.Globalization.CultureInfo("ZH-CN",true);
System.IO.StringWriter oStringWriter = new System.IO.StringWriter(myCItrad);
System.Web.UI.HtmlTextWriter oHtmlTextWriter = new System.Web.UI.HtmlTextWriter(oStringWriter);
this.Order_DataGrid.RenderControl(oHtmlTextWriter);
Response.Write(oStringWriter.ToString());
Response.End();
在应用程序列表框中选择“Microsoft Excel 应用程序”->
“安全性”->选择“使用自定义访问权限”,点击“编辑”按钮
添加本地“ASPNET”用户,权限为“允许访问
http://community.csdn.net/Expert/topic/3077/3077526.xml?temp=.8746912
http://www.dev-club.com/club/bbs/showEssence.asp?id=26350http://dev.csdn.net/Develop/article/18/18623.shtm
http://community.csdn.net/Expert/topic/3112/3112296.xml?temp=.926861
http://dotnet.aspx.cc/ShowDetail.aspx?id=BF0A54F9-C7C7-4200-BD9A-802AC1F5DE50
http://expert.csdn.net/Expert/TopicView1.asp?id=2928057www.foxhis.com/powermjtest/
原文代码:
private void Button1_Click(object sender, System.EventArgs e)
{
//写入Excel的方法:
//定义需要参数。
string SourceFile="Data.XLS"; //源文件名称。
string TemplatePath=Server.MapPath("ExcelTemplate"); //存放源文件的文件夹路径。
string DownloadPath=Server.MapPath("ExcelDownload"); //副本的文件夹路径。
//副本的文件名。
string TempFileName = DateTime.Now.ToString("yyyyMMdd") + DateTime.Now.Hour + DateTime.Now.Minute + DateTime.Now.Second + ".XLS";
object missing = System.Reflection.Missing.Value;
Excel.Application myExcel=new Excel.Application();
//打开新文件
myExcel.Application.Workbooks.Open(TemplatePath+"\\"+SourceFile,missing,missing,missing,missing,
missing,missing,missing,missing,missing,missing, missing,missing);
Excel.Workbook myBook=myExcel.Workbooks[1];
Excel.Worksheet curSheet = (Excel.Worksheet)myBook.Sheets[2];
string DownloadFilePath=DownloadPath+"\\"+TempFileName;
int i=0;
while (i<=10)
{
myExcel.Cells[4+i,2]=i.ToString();
myExcel.Cells[4+i,3]=i.ToString();
myExcel.Cells[4+i,4]=i.ToString();
myExcel.Cells[4+i,5]=i.ToString();
myExcel.Cells[4+i,6]=i.ToString();
i++;
}
myBook.Saved=true;
//myBook.SaveAs(DownloadFilePath,missing,"","",false,false,Excel.XlSaveAsAccessMode.xlNoChange,1,false,missing,missing);
myBook.PrintPreview(0);
//myBook.PrintOut(missing,missing,missing,missing,missing,missing,missing,missing);
myBook.Close(false, null,null);
myExcel.Quit();
System.Runtime.InteropServices.Marshal.ReleaseComObject(myBook);
System.Runtime.InteropServices.Marshal.ReleaseComObject(myExcel);
myBook = null;
myExcel = null;
GC.Collect();
//Response.Redirect("ExcelDownload//"+TempFileName); //下载文件
}
----(你读文件的路径不对)
2.所要打开的文档被其他程序占用。切换到相应程序,关闭文档后再试。
----(你的程序可能因为出错或者其他原因没有关闭,导致EXCEL进程没有关闭)
3.所要保存的工作簿的名称与另一个只读文档同名。请用其他名称保存文档。
---- (你的WORKBOOK的名字重复)依我看,第二种可能比较大。