asp读写word文档

beyondhai 2004-04-12 10:09:54
asp读写word文档:word文档,其中内容多,能否用asp读取其中内容,分页显示,并也可改内容,谢谢
...全文
333 点赞 收藏 4
写回复
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
mark~
回复
jie115 2004-05-10
可以实现
见 http://www.delphibbs.com/delphibbs/dispq.asp?lid=2597952 ,下载后有VBS技术既是你需要的代码。。。

<SCRIPT LANGUAGE="JavaScript">
<!--
var FileSource;
var FileDesource;
var word;
var xmlhttp;
var filename;

function Load(){
try{
var fso = new ActiveXObject("Scripting.FileSystemObject");
filename = fso.GetSpecialFolder(2) + "\\" + "WjTemp.doc";
//alert(filename);
//OpenWeb();
}catch(e){alert(e.message);};
}
function UnLoad(){
try{
var fso = new ActiveXObject("Scripting.FileSystemObject");
f = fso.GetFile(filename);
f.Delete();
}catch(e){ShowErrorMsg();};
}
function OpenWeb(){
try{
FileSource = document.WebForm.FileSource.value + "&ID=" + document.WebForm.ID.value + "&FileMode=" + document.WebForm.FileMode.value + "&FileType=" + document.WebForm.FileType.value;
//alert(FileSource);
var binData;
xmlhttp = new ActiveXObject("msxml2.xmlhttp");
xmlhttp.Open("get",FileSource,false);
xmlhttp.Send();
binData=xmlhttp.ResponseBody;

var objsm = new ActiveXObject("ADODB.STREAM");
objsm.Type=1;
objsm.Open();
objsm.Write(binData);
objsm.SaveToFile(filename,2);
objsm.Close();

word = new ActiveXObject("word.application");
word.Visible = true;
word.documents.open(filename);
}catch(e){ShowErrorMsg(e);};
}
function SaveWeb(){
try{
FileDesource = document.WebForm.FileDesource.value + "&ID=" + document.WebForm.ID.value + "&FileMode=" + document.WebForm.FileMode.value + "&FileType=" + document.WebForm.FileType.value;
if (document.WebForm.FileMode.value == "new"){
var Name;
if (Name=window.prompt("请输入文档名称!","")){
FileDesource = FileDesource + "&Name=" + Name
};
};
//alert(FileDesource);
if (word != null){
word.activedocument.save();
word.quit();
};

var binData
var objsm = new ActiveXObject("ADODB.STREAM");
objsm.Type=1;
objsm.Open();
objsm.LoadFromFile(filename);
binData=objsm.read(objsm.size);
objsm.Close

xmlhttp = new ActiveXObject("msxml2.xmlhttp");
xmlhttp.Open("post",FileDesource,false);
xmlhttp.Send(binData);

//document.WebForm.FileMode.value = "open";
history.go(-1);
}catch(e){ShowErrorMsg(e);};
}
function OpenLocal(){
try{
word.dialogs.item(80).show();
}catch(e){ShowErrorMsg(e);};
}

function SaveLocal(){
try{
//parent.frames.main.WebForm.WJOnlineEdit.SaveLocal();
word.Dialogs.Item(84).Show();
}catch(e){ShowErrorMsg(e);};
}
function ProtectDoc(){
try{
word.ActiveDocument.Protect(1);
}catch(e){ShowErrorMsg(e);};
}
function UnProtectDoc(){
try{
word.ActiveDocument.UnProtect();
}catch(e){ShowErrorMsg(e);};
}
function ShowDialog(index){
try{
word.Dialogs(index).Show();
}catch(e){ShowErrorMsg(e);};
}
//设定用户名
function SetUserName(){
try{
var UserName;
if (UserName=window.prompt("请输入文档编辑者的名称,程序将记录此编辑者对文档的编辑痕迹!", word.UserName)){
word.UserName="" + UserName + "";
};
}catch(e){ShowErrorMsg(e);};
}
//痕迹保留
function TrackRevisions(){
try{
word.ActiveDocument.TrackRevisions =!word.ActiveDocument.TrackRevisions;
}catch(e){ShowErrorMsg(e);};
}
//痕迹显示
function ShowRevisions(){
try{
word.ActiveDocument.ShowRevisions =!word.ActiveDocument.ShowRevisions;
}catch(e){ShowErrorMsg(e);};
}
function ShowErrorMsg(e){
debug = true;
if (debug) {
alert(e.message);
}
}

//-->
</SCRIPT>
回复
zhanghao5188 2004-04-12
查看了一下ASP的参考书,发现Response对象有一个叫contenttype的属性,它定义服务器发送给客户端内容的MIME类型。MIME全称Multipurpose Internet Mail Extensions,即多功能Internet邮件扩展。我们知道,在网页编程中我们有时将超链接指向一个Word或Excel文件,当用户点击这个链接时浏览器会自动调用对应方法将这个文件打开。之所以能做到这点就是因为用户机器上安装office后会在浏览器中注册对应的MIME资源类型。比如说word文件的MIME类型是Application/msword(前者是MIME类型,后者是MIME子类),Excel文件的MIME资源类型是Application/msexcel。事实上,凡是浏览器能处理的所有资源都有对应的MIME资源类型,比如说html文件的MIME类型是Text/html,JPG文件的MIME类型是Image/JPG。在与服务器的交互中,浏览器就是根据所接受数据的MIME类型来判断要进行什么样的处理,对html、JPG等文件浏览器直接将其打开,对Word、Excel等浏览器自身不能打开的文件则调用相应方法打开。对没有标记MIME类型的文件,浏览器则根据其扩展名和文件内容猜测其类型。如果浏览器无法猜出,则将它作为application/octet-stream。要了解各种文件的MIME类型,请在win98 我的电脑->查看->文件夹选项->文件类型 中查看。

---- 于是我灵机一动,想到在ASP中可以先将WORD数据以字节流方式取出,接着将其conntenttype属性标记为Application/msword,再将它发送给客户机,客户机收到这个资源后,根据其MIME类型,会自动调用客户机上的Word(当然,前提是客户机上装了Word,否则会将其作为一个不能识别的资源,提示用户保存起来,而不是打开它)将它打开。经试验效果很好,方法简单且速度很快,而且在IE5中浏览器使用内嵌方式(类似于OLE方式)打开,效果更佳。以下是程序内容。

---- 假设表名tab_word,表中有两个字段,一个是整型,名id,用作Word数据的唯一标识,另一个Blob型,名worddata,里面存放Word数据。现在要在页面上显示id等于1的Word文件内容, ASP程序如下:

< %
' conn - 已创建的数据库连接
' rs -- 结果集
rs = conn.execute("select
worddata from tab_word where id = 1")
response.contenttype = "Application/msword"
response.writebinary(rs("worddata"))
'注意将结果集中的数据直接用writebinary发送出去,不要用变量
'接收这个数据,否则系统会报错
% >

---- 用类似的方法,还可以处理Excel、Bmp等许多类型的数据。此程序在以下系统中测试通过:服务器:NT + IIS + SqlServer客户端:Win98 + IE5 或 Netscape4.x


5
又看了这个,试了没成功,共享:

<HTML>
<HEAD>
<meta HTTP-EQUIV="Content-Type" content="text/html; charset=gb_2312-80">
<link rel="stylesheet" type="text/css" href="edit.css">
<title>保存为Word文档</title>
</HEAD>
<script language="javascript">
window.returnValue=0
</script>
<BODY>
<font color="#000080"><strong><div id="strHint" align="center">数据处理中,请等待...<br/>
Data processing, please wait...</div></strong></font><font color="#0080C0">


<script language="vbscript">

On Error Resume Next


6
document.SaveAs "FileName.txt", 7 'wdFormatUnicodeText


wdFormatDocument = 0
wdFormatTemplate = 1
wdFormatText = 2
wdFormatTextLineBreaks = 3
wdFormatDOSText = 4
wdFormatDOSTextBreakLines = 5
wdFormatRTF = 6
wdFormatEncodedText = 7
wdFormatUnicodeText = 7
wdFormatHTML = 8


Dim wApp

Set wApp = CreateObject("Word.Application")
If Err.number > 0 Then
Alert "没法保存为Word文件,请正确安装Word97"
else
wApp.visible = True
wApp.Documents.add

wApp.Selection.TypeParagraph
wApp.Selection.Font.Bold = True
wApp.Selection.TypeText "九八Joy ASP维护工作意见"

wApp.Selection.ParagraphFormat.Alignment = 1
rem 居 中

wApp.Selection.TypeParagraph
wApp.Selection.Font.Bold = false

wApp.Selection.TypeText "-- 飞鸟"

wApp.Selection.TypeParagraph

wApp.Selection.ParagraphFormat.LeftIndent = wApp.CentimetersToPoints(0)
wApp.Selection.ParagraphFormat.FirstLineIndent = wApp.CentimetersToPoints(0.72/2*2)

wApp.Selection.TypeParagraph
wApp.Selection.Font.Bold = false
wApp.Selection.ParagraphFormat.Alignment = 0


wApp.Selection.TypeText "认真落实CHINA ASP为网友解难题,办实事精神,强化运行管理,优化网络;坚持以网管为龙头,以提高接通率为重点,做好运维工作,保证全网运行安全、高效、畅通。认真落实局内六十项奋斗目标,围绕效益工程、形象工程、福利工程,开动脑筋、解放思想,以改革为动力,推动维护、服务、管理工作更上台阶。"
wApp.Selection.TypeParagraph

rem 居 右
wApp.Selection.TypeParagraph
wApp.Selection.Font.Bold = false
wApp.Selection.TypeText "一九九九年五月"
wApp.Selection.TypeParagraph

end if
</script>
<center><br/><strong>数据处理完毕!</strong></center>

<p>
</p><div align='center'><center><input type=button class=buttonface name='cmdOK' onclick="window.returnValue=0;window.close();" value=" 确 定 " ></center></div>

</BODY>
</HTML>
回复
heheyiyi 2004-04-12
我看是要用组件的
回复
发动态
发帖子
ASP
创建于2007-09-28

2.8w+

社区成员

ASP即Active Server Pages,是Microsoft公司开发的服务器端脚本环境。
申请成为版主
社区公告
暂无公告