Office Word関連 のバックアップ(No.1) - PukiWiki

技術メモ?

using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Text; using System.Windows.Forms; using System.IO;

....................

 // 转化文件格式Word为Html格式
private void ConvertFileWordToHtml(string WordFilePath)
       {
           try
           {
               // 1、指定原文件和目标文件
               object Source = WordFilePath;
               string SaveHtmlPath = WordFilePath.Substring(0, WordFilePath.Length - 4) + "html";
               object Target = SaveHtmlPath;
               // 2、缺省参数  //为了保险,只读方式打开
               object Unknown = Type.Missing;
               object readOnly = true;
               object visible = false;
               // 3、打开doc文件
               Microsoft.Office.Interop.Word.Application newApp = new Microsoft.Office.Interop.Word.Application();
               Microsoft.Office.Interop.Word.Document doc = newApp.Documents.Open(ref Source, ref Unknown,
                    ref readOnly, ref Unknown, ref Unknown, ref Unknown, ref Unknown, ref Unknown, ref Unknown,
                    ref Unknown, ref Unknown, ref visible, ref Unknown, ref Unknown, ref Unknown, ref Unknown);
               // 4、指定另存为格式(HTML) 
               Type docType = doc.GetType();
               object format = Microsoft.Office.Interop.Word.WdSaveFormat.wdFormatHTML;
               docType.InvokeMember("SaveAs", System.Reflection.BindingFlags.InvokeMethod,
                   null, doc, new object[] { Target, format,Unknown,Unknown,Unknown,Unknown,Unknown,
                   Unknown,Unknown,Unknown,Unknown,Unknown,Unknown,Unknown,Unknown,Unknown });
              // doc.SaveAs(ref Target, ref format,
              //         ref Unknown, ref Unknown, ref Unknown,
              //         ref Unknown, ref Unknown, ref Unknown,
              //         ref Unknown, ref Unknown, ref Unknown,
              //         ref Unknown, ref Unknown, ref Unknown,
              //         ref Unknown, ref Unknown);
               // 5、关闭文档和Word程序
               doc.Close(ref Unknown, ref Unknown, ref Unknown);
               newApp.Quit(ref Unknown, ref Unknown, ref Unknown);
           }
           // 处理异常
           catch (Exception e)
           {
               System.Windows.Forms.MessageBox.Show(e.Message);
           }
       }

方法2: protected void ConvertToHtml(string docPath,string htmlPath)

       {
            Word.Application app=new Word.Application();
            app.Visible=false;
            Object o=Missing.Value;
            object docFile=docPath;
            _Document doc=app.Documents.Open(ref docFile,ref o,ref o,ref o,ref o,ref o,ref o,ref o,ref o,ref o,ref o,ref o,ref o,ref o,ref o);
            object fileName=htmlPath;
            object format=8;//Html
            doc.SaveAs(ref fileName,ref format,ref o,ref o,ref o,ref o,ref o,ref o,ref o,ref o,ref o,ref o,ref o,ref o,ref o,ref o);
            object t=true;
            app.Quit(ref t,ref o,ref o);
       }

方法3:

  发现在Gmail的邮箱中发过来的附件可以在IE中直接打开浏览,而且生成的是HTML的格式,决定在.Net试试,在网上查到一篇利用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 { 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);

}

private void InitializeComponent() {

this.Load += new System.EventHandler(this.Page_Load);

}

#endregion

} }


トップ   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS

G|Cg|C@Amazon Yahoo yV

z[y[W yVoC[UNLIMITȂ1~] COiq COsیI