|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
在实现ERP等高端的ASP应用时,用户需要提供核心的经营资料,需要ASP商有很高的信用度。楼上说交互性不好,太牵强了吧。在微软提供的一套框架中,利用asp做网站,开发效率高,使用人数少,减少不必要的开销。交互性是互动方式,是有开发人员决定的。在asp中使用excel的一个办法是将excel文件作为一个数据库举行链接,然后的操纵和对access数据库操纵相似.可是这个办法不是总能有效的,应为excel不是干系型的数据库。在asp中使用excel的一个办法是将excel文件作为一个数据库举行链接,然后的操纵和对access数据库操纵相似.可是这个办法不是总能有效的,应为excel不是干系型的数据库。关于一个流动格局,这个格局里有庞大的单位格兼并,边框线条款式,另有图案,单位格之间另有公式干系等等的,我想最简单了解的就是在背景翻开一个已有设定好模板的文件,然后在必要的中央拔出数据,保留,输入......
这里提到的这类办法是间接创建一个excel工具,在背景能够更便利的对excel文档举行各类操纵.文中一段
服务器端还必需要设置的一点是COM组件的操纵权限。在命令行键进“DCOMCNFG”,则进进COM组件设置界面,选择MicrosoftExcel后点击属性按钮,将三个单选项一概选择自界说,编纂中将Everyone到场一切权限。保留终了后从头启动服务器。
很主要.不设置的话,其余电脑将没法完成excel工具的创建.
可是这类办法也有一个缺憾,在我实践操纵中,假如服务器上已有翻开的excel文件,再实行统一文件,就会堕落.临时还弄不分明为什么.大概另有一些中央没设置好吧.
别的,下面援用的文章中实例代码格局不太完全,个中良多换行和空格格局禁绝确,假如代码完全,只需复制代码,就能够运转乐成,然后再渐渐举行研讨修正,就很简单上手了.现把修正后的代码以下(删往了个中绘图表的部分):
程序代码:
<%
OnErrorResumeNext
strAddr=Server.MapPath(".")
setobjExcelApp=CreateObject("Excel.Application")
objExcelApp.DisplayAlerts=false
objExcelApp.Application.Visible=false
objExcelApp.WorkBooks.Open(strAddr&"TempletNull.xls")
setobjExcelBook=objExcelApp.ActiveWorkBook
setobjExcelSheets=objExcelBook.Worksheets
setobjExcelSheet=objExcelBook.Sheets(1)
objExcelSheet.Range("B2:k2").Value=Array("Week1","Week2","Week3","Week4","Week5","Week6","Week7")
objExcelSheet.Range("B3:k3").Value=Array("67","87","5","9","7","45","45","54","54","10")
objExcelSheet.Range("B4:k4").Value=Array("10","10","8","27","33","37","50","54","10","10")
objExcelSheet.Range("B5:k5").Value=Array("23","3","86","64","60","18","5","1","36","80")
objExcelSheet.Cells(3,1).Value="InternetExplorer"
objExcelSheet.Cells(4,1).Value="Netscape"
objExcelSheet.Cells(5,1).Value="Other"
objExcelSheet.Range("b2:k5").Select
SaveAs(strAddr&"TempExcel.xls")
objExcelApp.Quit
setobjExcelApp=Nothing
%>
<!DOCTYPEHTMLPUBLIC"-//W3C//DTDHTML4.0Transitional//EN">
<HTML>
<HEAD>
<TITLE>NewDocument</TITLE>
<METANAME="Generator"CONTENT="MicrosoftFrontPage5.0">
<METANAME="Author"CONTENT="">
<METANAME="Keywords"CONTENT="">
<METANAME="Description"CONTENT="">
</HEAD>
<BODY>
</BODY>
</HTML>
操纵完excel文件必要将文件举行输入,实践弄一下,用ASP的redirect到excel办法,偶然候是在IE中间接翻开,偶然候是弹出"下载翻开保留"窗口.假如必要间接在IE中翻开,不放用FSO载进excel文件,然后在IE中输入.
程序代码:
<%
DimFso,FileExt,strFilePath,Mime
strFilePath="f:aspxuexi.doc"
SetFso=Server.CreateObject("Scripting.FileSystemObject")
FileExt=Fso.GetExtensionName(strFilePath)
Setfso=Nothing
SelectCaseFileExt
Case"doc"
Mime="Application/msword"
Case"xls"
Mime="Application/msexcel"
EndSelect
CallOutPut(strFilePath,Mime)
######################################################
FunctionOutPut(strFilePath,Mime)
Response.ContentType=Mime
ConstadTypeBinary=1
SetobjStream=Server.CreateObject("ADODB.Stream")
objStream.Open
objStream.Type=adTypeBinary
objStream.LoadFromFilestrFilePath
Response.BinaryWriteobjStream.Read
objStream.Close
SetobjStream=Nothing
EndFunction
######################################################
%>
在实践使用中.当服务器正直在运转excel或ACCESS程序时,客户端提交创建excel.application工具没法乐成.另外一种情形,当一个客户端提交哀求时,并没有停止时,另外一个客户端提交的哀求也没法乐成!也许这个成绩有其余办理计划,可是最少这是不不乱的.
恰好我们部门外部网上有相干乐成的例子,挖出来看,本来是在客户端创建excel.application的.如许,服务器端不会再抵触.关于客户端,由于是在局域网内运转,客户IE平安级别能够设低,并同意运转相干activeX(就是在IE工具选项中把各种触及平安的器材都设为同意,详细的哪一项没有往究查),即便没有设置,IE也会弹出告诫窗口:"是不是同意运转activeX?"
完成的代码和上篇日记差未几,复杂的以下:
程序代码:
<scriptlanguage="vbscript">
setobjExcelApp=CreateObject("Excel.Application")
objExcelApp.DisplayAlerts=true
objExcelApp.WorkBooks.Open("http://XXX.XXX.XXX/XXX.xls")
完全网路地点的xls文件,这个文件已设置好格局及打印款式,保留在服务器上
setobjExcelBook=objExcelApp.ActiveWorkBook
setobjExcelSheets=objExcelBook.Worksheets
setobjExcelSheet=objExcelBook.Sheets(1)
====此处为对excel单位格举行填写数据的语句,假如是从数据库提取数据,可由背景程序天生这些语句,ASP中的示列:
如:response.write"objExcelSheet.Range(""B2"").Value="""&rs("XXX")&""""
或objExcelSheet.Range("B2").Value="<%=rs("XXX")%>"
objExcelSheet.Range("B2:k2").Value=Array("Week1","Week2","Week3","Week4","Week5","Week6","Week7")
objExcelSheet.Range("B3:k3").Value=Array("67","87","5","9","7","45","45","54","54","10")
objExcelSheet.Range("B4:k4").Value=Array("10","10","8","27","33","37","50","54","10","10")
objExcelSheet.Range("B5:k5").Value=Array("23","3","86","64","60","18","5","1","36","80")
objExcelSheet.Cells(3,1).Value="InternetExplorer"
objExcelSheet.Cells(4,1).Value="Netscape"
objExcelSheet.Cells(5,1).Value="Other"
==================
objExcelApp.Quit
setobjExcelApp=Nothing
</script>
上述代码中
objExcelApp.Quit
setobjExcelApp=Nothing
作为作废实行,由于此处不要封闭excel.applicaition,否则数据填完后,excel会封闭失落.这时候在客户端翻开的excel文件必要由客户举行修正或打印等操纵.
同时objexcelapp工具另有打印设置及进进打印预览界面等办法,可参考相干excel相干材料.
大家可以自己去看一看.可以说看得想呕吐.以前有次下了个动网来看.里面连基本内置函数的保护措施(函数没防御性)都没有.难怪经常补这个补那个了.可能现在.NET版会好点吧 |
|