| 
				 
					  
				
					  
				
					用vb写的相应的代码知道(在那里有excel进程退不出的问题!) 
					 
					我是想把数据库相应的纪录提取出来之后生成excel文件给用户下载(可能有多个用户同时使用该程序)。 
					我试了用vb的代码进行改写,但是很多地方出错! 
					 
					并且最好能够删除生成的临时文件(有个模板)。 
				 
				刚才用示例代码运行时出现错误 
				服务器对象 错误 'ASP 0178 : 80070005' 
				 
				Server.CreateObject 访问错误 
				 
				/control/1.asp,行3 
				 
				检查权限时Server.CreateObject 的调用失败。对此对象的访问被拒。 
				*****************此为调用excel文件显示出来***************** 
				 
				Microsoft VBScript 运行时错误 错误 '800a0046' 
				 
				没有权限: 'createobject' 
				 
				/control/excel.asp,行3 
				******************此为把数据库的数据插入到excel时出现的错误******* 
				 
				各位达人怎么需要怎么设置? 
				 
				很简单, 
				在第一句ASP语句上这样写: 
				Response.ContentType = "Application/vnd.ms-excel" 
				然后照正常ASP网页编写,则所有的HTML文档被自动的转化成了Excel文档,并通知浏览器使用Excel插件。 
				这是一个写头命令的小技巧。 
				 
				 
				用上面的方法好倒好,但有时会出问题,比如:在有的WINDOWS版本下或OFFICE版本下,显示空白、显示不全、乱码、表格线错误等,总之问题多多, 如直接生成一个文件,格式与HTML的相差不大的话,也会出现上述问题。。最终的解决办法有两个,一个是在服务器上有EXCEL的ODBC驱动的话,万事大吉,用SQL的SELECT 语句就能生成EXCEL文件,如没有可以看我发在技术文章区中的关于这个问题的解决方法,有全部代码。不过也要有FSO权限。如没有FSO权限,就要求服务器上有ADO2.5版以上,稍改一下我的代码(主要是写文件时)。 
				 
				阿余说的没错,不过,如果能够确定客户端比如内部网的情况,我还是推荐使用这种方法,它毕竟是一种趋势,而且IE升级到了5.0之后通常都会正常显示,何况很多人使用了IE6和Office XP。 
				这种方法的最大好处在于极大程度地减轻了服务器的负担,同时也减轻了程序员的负担
				 
				
					  
				
					<% 
					Response.ContentType = "application/vnd.ms-excel" 
					%> 
					 
					下面来看一个例子,假设现在有如下形式的数据: 
					flavor qty_baked qty_eaten qty_sold price 
					Boston 24 2 10 0.5 
					Jelly 24 1 12 0.5 
					Strawberry 36 1 15 0.5 
					Chocolate 24 2 6 0.75 
					Maple 12 1 6 0.75 
					 
					客户要求用EXECL的形式表现出来,并且希望其中能加上其他一些计算汇总 
					 
					用如下代码: 
					…… 
					<% 
					Response.ContentType = "application/vnd.ms-excel" 
					 
					set conntemp=server.createobject("adodb.connection") 
					cnpath="DBQ=" & server.mappath("/stevesmith/data/timesheet.mdb") 
					conntemp.Open "DRIVER={Microsoft Access Driver (*.mdb)}; " & cnpath 
					set RS=conntemp.execute("select * from donut") 
					%> 
					<TABLE BORDER=1> 
					<TR> 
					<% 
					' %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 
					' % Loop through Fields Names and print out the Field Names 
					' %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 
					j = 2 'row counter 
					For i = 0 to RS.Fields.Count - 1 
					%> 
					<TD><B><% = RS(i).Name %></B></TD> 
					<% Next %> 
					<TD><B>On Hand (calculated)</B></TD> 
					<TD><B>Gross (calculated)</B></TD> 
					</TR> 
					<% 
					' %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 
					' % Loop through rows, displaying each field 
					' %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 
					Do While Not RS.EOF 
					%> 
					<TR> 
					<% For i = 0 to RS.Fields.Count - 1 
					%> 
					<TD VALIGN=TOP><% = RS(i) %></TD> 
					<% Next %> 
					<TD>=b<%=j%>-c<%=j%>-d<%=j%></TD> 
					<TD>=d<%=j%>*e<%=j%></TD> 
					</TR> 
					<% 
					RS.MoveNext 
					j = j + 1 
					Loop 
					' %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 
					' % Make sure to close the Result Set and the Connection object 
					' %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 
					RS.Close 
					%> 
					<TR BGCOLOR=RED> 
					<TD>Totals</TD> 
					<TD>=SUM(B2:B6)</TD> 
					<TD>=SUM(C2:C6)</TD> 
					<TD>=SUM(D2:D6)</TD> 
					<TD>n/a</TD> 
					<TD>=SUM(F2:F6)</TD> 
					<TD>=SUM(G2:G6)</TD> 
					</TABLE> 
					 
					  
				
					  
				
					  
			 |