VSTO

 WordフォーマットのファイルをHTMLへ変換するサンプルを紹介します。

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、ReadOnlyでファイルを開きます
               object Unknown = Type.Missing;
               object readOnly = true;
               object visible = false;

               // 3、Wordファイルを開く
               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フォーマットで開けますので、Word.Applicationを利用する方法が見つけました

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>
/// 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;

   // ファイルをOpenします。
   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});

   //Exist
   wordType.InvokeMember("Quit", System.Reflection.BindingFlags.InvokeMethod,
    null, word, null);
}

override protected void OnInit(EventArgs e)
{
  InitializeComponent();
 base.OnInit(e);
} 
 private void InitializeComponent()
 {    
  this.Load += new System.EventHandler(this.Page_Load);
 }
 }
}


ウィジェット型CM動画配信サービス manna [マナ]

コメント:



(画像の文字列を入力して下さい)

トップ   編集 凍結解除 差分 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2019/12/02 (月) 12:43:45 (1628d)

G|Cg|C@Amazon Yahoo yV

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