vb.net操作world,将world转化为html.我在从本地启动是可以的,用iis启动就不行了,客户访问也不行,请大虾赐教!!!!!!
Imports System.Web
Imports System.Web.Services
Imports System.IO
Imports System.Drawing
Imports Microsoft.Office.Interop.Word
Imports Microsoft.Office.Interop
Public Class uploadFileShow
Implements System.Web.IHttpHandler
Private Property Word As Object
Sub ProcessRequest(ByVal context As HttpContext) Implements IHttpHandler.ProcessRequest
'Dim image, image16 As Image
'Dim callb As System.Drawing.Image.GetThumbnailImageAbort = Nothing
context.Response.ContentType = "text/plain"
Dim file As HttpPostedFile = context.Request.Files.Get("Filedata")
Dim uploadPath As String = HttpContext.Current.Server.MapPath(context.Request("folder")) & ""
If Not file Is Nothing Then
If Not (Directory.Exists(uploadPath)) Then
Directory.CreateDirectory(uploadPath)
End If
Dim picName As String = GetFileName()
Dim picHtml As String = picName + ".html"
Dim uploadPathHtml As String = uploadPath
uploadPathHtml += picHtml
Dim extension As String = System.IO.Path.GetExtension(file.FileName)
picName += extension
uploadPath += picName
file.SaveAs(uploadPath)
'Dim wordApp As New Word.ApplicationClass
' 定义Word对象()
' Dim wordApp As New Word.ApplicationClass
' 要转换的文件名()
' Dim fileName As Object = uploadPath
' 默认值()
' Dim miss As Object = System.Reflection.Missing.Value
' 打开要转换的 DOC 文件
' Dim doc As Word.Document = DirectCast(wordApp.Documents.Open(fileName, miss, miss, miss, miss, miss, miss, miss, miss, miss, miss, miss, miss, miss, miss, miss), Word.Document)
' 转换后的文件名()
' fileName = uploadPathHtml
' 保存的文件格式()
' Dim saveFormat As Object = Word.WdSaveFormat.wdFormatHTML
' 按文本文件保存()
' doc.SaveAs(fileName, saveFormat, miss, miss, miss, miss, miss, miss, miss, miss, miss, miss, miss, miss, miss, miss)
' 关闭是否保存文件, 这里为不保存
' Dim changes As Object = False
' 关闭文件()
' doc.Close(changes, miss, miss)
' 退出 Word 应用程序
' wordApp.Quit(changes, miss, miss)
Dim word As New Word.Application()
' word.ApplicationClass(word = New Word.ApplicationClass())
Dim wordType As Type = word.GetType()
Dim docs As Microsoft.Office.Interop.Word.Documents = word.Documents
'打开文件()
Dim docsType As Type = docs.GetType()
Dim sFileName As String = uploadPath
'这里DOC文件的虚拟路径,
Dim doc As Microsoft.Office.Interop.Word.Document = CType(docsType.InvokeMember("Open", System.Reflection.BindingFlags.InvokeMethod, Nothing, docs, New [Object]() {sFileName, True, True}), Microsoft.Office.Interop.Word.Document)
'Dim doc As Microsoft.Office.Interop.Word.Document = CType(docsType.InvokeMember("Open", System.Reflection.BindingFlags.InvokeMethod, Nothing, docs, New [Object]() {sFileName, True, True}), Microsoft.Office.Interop.Word.Document) ' 转换格式,另存为
Dim docType As Type = doc.GetType()
Dim saveFileName As Object = uploadPathHtml
docType.InvokeMember("SaveAs", System.Reflection.BindingFlags.InvokeMethod, Nothing, doc, New Object() {saveFileName, Microsoft.Office.Interop.Word.WdSaveFormat.wdFormatFilteredHTML})
docType.InvokeMember("SaveAs", System.Reflection.BindingFlags.InvokeMethod, Nothing, doc, New Object() {saveFileName, Microsoft.Office.Interop.Word.WdSaveFormat.wdFormatHTML})
wordType.InvokeMember("Quit", System.Reflection.BindingFlags.InvokeMethod, Nothing, word, Nothing)
context.Response.Write(picHtml)
context.Response.End()
End If
context.Response.Write("0")
context.Response.End()
End Sub
Public Function GetFileName() As String
Dim rd As New Random
Dim ss As String = rd.Next(0, 999999).ToString()
Dim serial As String = DateTime.Now.ToString("yyyyMMddHHmmss")
serial = serial + ss
Return serial
End Function
ReadOnly Property IsReusable() As Boolean Implements IHttpHandler.IsReusable
Get
Return False
End Get
End Property
End Class
[解决办法]
必须在web.config里配置模拟账户,因为word是单机程序,没有办法直接在iis的服务进程里运行的。想在网页上显示word文件,可以用PageOffice,成熟稳定,而且还支持跨浏览器,chrome、Firefox都能用