仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 761|回复: 9
打印 上一主题 下一主题

[学习教程] ASP网页编程之ASP输入excel文件的示例

[复制链接]
简单生活 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-1-16 22:05:43 | 只看该作者 回帖奖励 |正序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

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版会好点吧
再见西城 该用户已被删除
10#
发表于 2015-3-27 09:09:30 | 只看该作者
最近在学asp,不要问我为什么不直接学.net,因为公司网站是asp做的所以有这个需要,卖了本书asp入门到精通,对里面的六大内置对象老是记不住,还有很多属性和方法看的头晕。
愤怒的大鸟 该用户已被删除
9#
发表于 2015-3-19 06:09:47 | 只看该作者
接下来就不能纸上谈兵了,最好的方法其实是实践。实践,只能算是让你掌握语言特性用的。而提倡做实际的Project也不是太好,因为你还没有熟练的能力去综合各种技术,这样只能使你自己越来越迷糊。
爱飞 该用户已被删除
8#
发表于 2015-3-11 18:08:24 | 只看该作者
它可通过内置的组件实现更强大的功能,如使用A-DO可以轻松地访问数据库。
第二个灵魂 该用户已被删除
7#
发表于 2015-3-4 09:12:22 | 只看该作者
Response:从字面上讲是“响应”,因此这个是服务端向客户端发送东西的,例如Response.Write
深爱那片海 该用户已被删除
6#
发表于 2015-2-14 17:26:53 | 只看该作者
封装性使得代码逻辑清晰,易于管理,并且应用到ASP.Net上就可以使业务逻辑和Html页面分离,这样无论页面原型如何改变,业务逻辑代码都不必做任何改动;继承性和多态性使得代码的可重用性大大提高。
精灵巫婆 该用户已被删除
5#
发表于 2015-2-6 00:42:10 | 只看该作者
从事这个行业,那么你可以学ASP语言,简单快速上手,熟练dreamweav排版,写asp代码,熟练photoshop处理图片,打好基础就行了
只想知道 该用户已被删除
地板
发表于 2015-1-29 12:07:50 | 只看该作者
兴趣爱好,那么你无须学编程,申请一个域名和空间,在网上下载一些免费开源的CMS系统,你不用改代码,只须熟悉它们的后台操作,像office一样简单方便,很快就能建一个站点,很多站长都是这样做的
再现理想 该用户已被删除
板凳
发表于 2015-1-20 15:04:31 | 只看该作者
Application:这个存储服务端的数据,如果不清除,会直到web应用程序结束才清除(例如重启站点)
飘飘悠悠 该用户已被删除
沙发
发表于 2015-1-17 07:38:45 | 只看该作者
Session:这个存储跟客户端会话过程的数据,默认20分钟失效
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-12-23 05:47

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表