===>怎么把WORD、EXCEL文档以文本文件格式读出来..在线等..
我现在在做一套C#.ASP.NET系统
其中一块业务需要实现手机审批功能,手机所浏览的是WORD或EXCEL文件
所以我现在想把WORD或EXCEL文件以文本格式(最好是全是正文字符串)读出来并转成WML格式。
请问哪位大侠帮忙整一下。先谢了
问题点数:50、回复次数:5Top
1 楼yistudio(阳光灿烂的日子)回复于 2005-06-21 14:46:53 得分 0
关注...Top
2 楼hchxxzx(NET?摸到一点门槛)回复于 2005-06-21 15:21:39 得分 30
这个基本不太可能.主要是微软公司对这玩意儿技术封锁.
以下是以前有人写的用ASP提取WORD文本的方法,但我试验不成功.你可参考一下.
详细信息请见: http://www.delphibbs.com/delphibbs/dispq.asp?lid=2597952
现给出部分代码
建议你认真看看下面的代码,特别是 word 对象的使用,利用他可以完成很多功能。
<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>Top
3 楼flovein2000(◣氓人科技◥)回复于 2005-06-21 16:03:16 得分 0
谢谢 楼上的指点
我找到一篇好文章
我们一起试验一下吧
http://jack.enping.gov.cn/default.asp?action=article&ID=41Top
4 楼flovein2000(◣氓人科技◥)回复于 2005-06-21 17:58:59 得分 0
下面是代码?帮忙调试一下,我调试未成功,提示“意外的服务情况”
---------------------------------------------------------------------
Word文档转化为HTML等其它格式
最后更新:2005-6-15 20:00:50
利用Word.Application提供的方法,可以很轻易地将Word文档转化为HTML等其它格式,下面就是实现的全部的代码:
Visual C#
WordToHtml.aspx
<%@ Page language="c#" Codebehind="WordToHtml.aspx.cs" AutoEventWireup="false"
Inherits="aspxWebcs.WordToHtml" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >
<HTML>
<HEAD>
<title>WordToHtml</title>
<meta name="GENERATOR" Content="Microsoft Visual Studio .NET 7.1">
<meta name="CODE_LANGUAGE" Content="C#">
<meta name="vs_defaultClientScript" content="JavaScript">
<meta name="vs_targetSchema" content="http://schemas.microsoft.com/intellisense/ie5">
</HEAD>
<body MS_POSITIONING="GridLayout">
<form id="Form1" method="post" runat="server">
</form>
</body>
</HTML>
WordToHtml.aspx.cs
using System;
using System.Collections;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Web;
using System.Web.SessionState;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.HtmlControls;
using Office;
namespace aspxWebcs
{
/// <summary>
/// WordToHtml 的摘要说明。
/// 首先要添加引用:Microsoft Word 9.0 Object Library
/// </summary>
public class WordToHtml : System.Web.UI.Page
{
private void Page_Load(object sender, System.EventArgs e)
{
// 在此处放置用户代码以初始化页面
Word.ApplicationClass word = new Word.ApplicationClass();
Type wordType = word.GetType();
Word.Documents docs = word.Documents;
// 打开文件
Type docsType = docs.GetType();
object fileName = "d:\\tmp\\aaa.doc";
Word.Document doc = (Word.Document)docsType.InvokeMember("Open",
System.Reflection.BindingFlags.InvokeMethod, null, docs, new Object[] {fileName, true, true});
// 转换格式,另存为
Type docType = doc.GetType();
object saveFileName = "d:\\tmp\\aaa.html";
//下面是Microsoft Word 9 Object Library的写法,如果是10,可能写成:
//docType.InvokeMember("SaveAs", System.Reflection.BindingFlags.InvokeMethod,
null, doc, new object[]{saveFileName, Word.WdSaveFormat.wdFormatFilteredHTML});
///其它格式:
///wdFormatHTML
///wdFormatDocument
///wdFormatDOSText
///wdFormatDOSTextLineBreaks
///wdFormatEncodedText
///wdFormatRTF
///wdFormatTemplate
///wdFormatText
///wdFormatTextLineBreaks
///wdFormatUnicodeText
docType.InvokeMember("SaveAs", System.Reflection.BindingFlags.InvokeMethod,
null, doc, new object[]{saveFileName, Word.WdSaveFormat.wdFormatHTML});
// 退出 Word
wordType.InvokeMember("Quit", System.Reflection.BindingFlags.InvokeMethod,
null, word, null);
}
#region Web 窗体设计器生成的代码
override protected void OnInit(EventArgs e)
{
//
// CODEGEN: 该调用是 ASP.NET Web 窗体设计器所必需的。
//
InitializeComponent();
base.OnInit(e);
}
/// <summary>
/// 设计器支持所需的方法 - 不要使用代码编辑器修改
/// 此方法的内容。
/// </summary>
private void InitializeComponent()
{
this.Load += new System.EventHandler(this.Page_Load);
}
#endregion
}
}
Top
5 楼hchxxzx(NET?摸到一点门槛)回复于 2005-06-21 19:16:08 得分 20
你必须在你的WEB.CONFIG里面启用模拟用户,否则权限不错.方法如下:
在"授权"节下
<identity impersonate="true" userName="xxx" password="xxx" />
上述用户你最好先用administrator用户试验一下.
你贴的那个代码我试过了,可以.如果转换成功html,你可尝试转换为txt看可不可以.Top




