1. 首先,把ContentType改成:application/vnd.ms-excel
其次,尽量避免使用HTTP Attachment的方式,很多应用不支持。你可以选择:1)把那个HttpHeader去掉,然后直接把.xls的文件内容用BinaryWrite写出去(这时候的文件名不对,但格式是对的);2)用Http Redirect,先把数据写在硬盘文件上,然后直接Redirect到那个.xls文件(这时候文件名对了,只是效率比较低);两者应该都能正常工作。2. 仅仅以文本形式无法控制Excel选择的格式,你必须调用Excel来生成相应的.xls文件才能控制。3. ContentType的值在Windows上是有应用程序自己注册的,在注册表里面,有一些常用的,但是Application/下面的可以任意——只要有应用程序认识;
Header也一样,是Http的扩展属性,只要客户端和Server都认识就行,没有固定的数量。
其次,尽量避免使用HTTP Attachment的方式,很多应用不支持。你可以选择:1)把那个HttpHeader去掉,然后直接把.xls的文件内容用BinaryWrite写出去(这时候的文件名不对,但格式是对的);2)用Http Redirect,先把数据写在硬盘文件上,然后直接Redirect到那个.xls文件(这时候文件名对了,只是效率比较低);两者应该都能正常工作。2. 仅仅以文本形式无法控制Excel选择的格式,你必须调用Excel来生成相应的.xls文件才能控制。3. ContentType的值在Windows上是有应用程序自己注册的,在注册表里面,有一些常用的,但是Application/下面的可以任意——只要有应用程序认识;
Header也一样,是Http的扩展属性,只要客户端和Server都认识就行,没有固定的数量。
解决方案 »
- html 控件select
- 关于.net 2.0简体中文版的
- 问题:当点击GridView中的[编辑]里的图标时,整个页面向显示器的(0,0)处移动大概2PX,这是为什么,我不希望页面移动,怎么办?
- 指教 iis问题,谢!!!!
- 思归大哥,帮忙看一下这个xml文件同时读写的问题。
- 我把几万行UPDATE......(sql更新语句)用分号(;)连接起来,放在一个事务里面执行,结果有问题?请大家援手,在线等
- 网站在域名子目录下如何访问
- 关于treeview控件的使用,我的工具箱中没有这个控件,请问如何添加,小弟刚刚接触.net,郁闷阿
- 考上博士了,有的失落,想找份临时或兼职性的工作:
- 这种情况下,如何对数据库进行更新操作
- 从数据库读图片,显示时,为什么只显示图片?那些Button 和 Label都没了,
- yunhai请进,你要的代码
可以考虑通过COM调用excel生成文件,有很多例子,包括C#的。
oExcel = CreateObject("Excel.Application")
oBook = oExcel.Workbooks.add oSheet = oBook.Worksheets(1)
oSheet.Rows("1:1").RowHeight = 36.6
oSheet.Range("A1").FormulaR1C1 = "test"
oSheet.Range("A1").Font.Bold = True
oSheet.Range("A1").Font.ColorIndex = 3
oSheet.Range("A1").Font.Size = 16 oBook.Saved = True
oExcel.UserControl = False
mm = Server.MapPath(".") + "\aa.xls" '服务器保存地址
oExcel.ActiveWorkbook.SaveCopyAs(mm)
oExcel.Quit()
Response.Redirect("aa.xls")
Excel.Application oExcel;
Excel.Workbook oBook;
Object oMissing = System.Reflection.Missing.Value;
oExcel = new Excel.Application();
oBook = oExcel.Workbooks.Add(oMissing);
oExcel.Cells[1,1]="'000000524654854";
oBook.Saved = true;
oExcel.UserControl = false;
string mm=Server.MapPath(".")+"\\cs.xls";
oExcel.ActiveWorkbook.SaveCopyAs(mm);
oExcel.Quit();
Response.Redirect("cs.xls");但转换成VB代码却出现了问题:Dim oExcel As Excel.Application
Dim oBook As Excel.Workbook
Dim oMissing As Object = System.Reflection.Missing.Value
oExcel = New Excel.Application()
oBook = oExcel.Workbooks.Add(oMissing)
oExcel.Cells(1, 1) = "'000000524654854"
oBook.Saved = True
oExcel.UserControl = False
Dim mm As String
mm = Server.MapPath(".") + "vb.xls"
oExcel.ActiveWorkbook.SaveCopyAs(mm)
oExcel.Quit()
Response.Redirect("vb.xls")提示信息:
拒绝访问。
说明: 执行当前 Web 请求期间,出现未处理的异常。
请检查堆栈跟踪信息,
以了解有关该错误以及代码中导致错误的出处的详细信息。 异常详细信息: System.UnauthorizedAccessException: 拒绝访问。 未授权此 ASP.NET 进程访问所请求的资源。
出于安全原因,默认的 ASP.NET 进程标识为“{machinename}\ASPNET”,
它只具有有限的特权。请考虑授予该 ASP.NET 进程标识访问此资源的权限。 若要授予 ASP.NET 对文件的写访问权,
请在资源管理器中右击该文件,选择“属性”,然后选择“安全”选项卡。
单击“添加”以添加“{machinename}\ASPNET”用户。
突出显示此 ASP.NET 帐户,在“允许”列中选中“写”框。源错误:
行 44: Dim oBook As Excel.Workbook
行 45: Dim oMissing As Object = System.Reflection.Missing.Value
行 46: oExcel = New Excel.Application()
行 47: oBook = oExcel.Workbooks.Add(oMissing)
行 48: oExcel.Cells(1, 1) = "'000000524654854"难道我要为使用我的软件的所有用户机都填加一个用户?
这个工作量太大了吧。
为什么CS的代码就可以执行New Excel.Application()这个语句而VB不可以呢?另外,这种方法和我的要求不符,
我要强行弹出下载/打开的对话框,
用Response.Redirect的方法弹出对话框只能在客户机的文件夹选项->文件类型中进行设置,
对于大量的客户机这似乎不可行;
那么就只能用BinaryWrite,
但文件名又不对,郁闷死了。谁能帮我彻底解决,再加100分
无法创建 ActiveX 组件。
说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。 异常详细信息: System.Exception: 无法创建 ActiveX 组件。源错误:
行 57: 'Response.Redirect("vb.xls")
行 58: Dim oExcel, oBook, oSheet, mm
行 59: oExcel = CreateObject("Excel.Application")
行 60: oBook = oExcel.Workbooks.add
行 61:
源文件: c:\inetpub\wwwroot\jiaoyanVB\WebForm3.aspx.vb 行: 59 堆栈跟踪:
[Exception: 无法创建 ActiveX 组件。]
Microsoft.VisualBasic.Interaction.CreateObject(String ProgId, String ServerName)
jiaoyanVB.WebForm3.Button2_Click(Object sender, EventArgs e) in c:\inetpub\wwwroot\jiaoyanVB\WebForm3.aspx.vb:59
System.Web.UI.WebControls.Button.OnClick(EventArgs e)
System.Web.UI.WebControls.Button.System.Web.UI.IPostBackEventHandler.RaisePostBackEvent(String eventArgument)
System.Web.UI.Page.RaisePostBackEvent(IPostBackEventHandler sourceControl, String eventArgument)
System.Web.UI.Page.RaisePostBackEvent(NameValueCollection postData)
System.Web.UI.Page.ProcessRequestMain()
异常详细信息: System.UnauthorizedAccessException: 拒绝访问。
的错误信息的。不知何故?另外,使用这种方法,WEB服务器是否必须要安装相应版本的OFFICE?比如说,你使用的Excel.dll是拿Office2000的EXCEL9.OLB转换的,是否在WEB服务器端就必须装Office2000?还有,使用此种方式导出的文件是否Office97、Office2000、OfficeXP都可以打开?
ADO2.5以上版本就可以。我就是用这种方法完成,用户非常满意。