如何将mht转成word格式

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何将mht转成word格式相关的知识,希望对你有一定的参考价值。

 第一步,先制作了一个很简单的html模板。将动态内容用诸如“$htmldata[1]”来代替,等取出数据后用Replace函数进行替换。

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">

<head>

<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

<title>$htmldata[1]</title>

<style type="text/css">

    margin:0px;

    padding:0px;

.article_s

    width:980px;

    height:auto;

    overflow:hidden;

    margin:0 auto;

.article_s_t_f

    width:960px;

    height:auto;

    line-height: 30px;

    font-size: 18px;

    padding-top: 10px;

    text-align: center;

    font-weight:700;

    margin:0 auto;

.article_s_t_s

    width:960px;

    line-height: 30px;

    text-align: center;

    font-size: 13px;

    border-bottom:1px dashed #CCC;

    margin:0 auto;

.article_s_l

    width:960px;

    margin:0 auto;

    line-height:28px;

    font-size:14px;

    padding:10px 0px 10px 0px;

.article_s_c

    width:960px;

    height:23px;

    text-align:center;

    margin-bottom:20px;

</style>

</head>

 

<body>

<div class="article_s">

    <div class="article_s_t_f">$htmldata[2]</div>

    <div class="article_s_t_s">$htmldata[3]</div>

    <div class="article_s_l">

        $htmldata[4]

    </div>

</div>

</body>

</html>

第二步:

建立一个静态类,代码如下:

public class Function

    

        static Function()

        //根据html生成mht文件,需要引入相应的dll,如图所示

public static void HtmlToMht(string src, string dst)

        

            CDO.Message msg = new CDO.MessageClass();

            CDO.Configuration c = new CDO.ConfigurationClass();

            msg.Configuration = c;

            msg.CreateMHTMLBody(src, CDO.CdoMHTMLFlags.cdoSuppressNone, "", "");

            ADODB.Stream stream = msg.GetStream();

            stream.SaveToFile(dst, ADODB.SaveOptionsEnum.adSaveCreateOverWrite);

        

 

        public static void WriteHtml(string name,string content,string addTime,string hits,stringuser)//参数内容都是从数据库读出来的文章信息,其中content就是ewebeditor生成的html代码

        

            DateTime dt = DateTime.Parse(addTime);//将string型的日期格式转为DateTime型的因为默认的日期格式不能作为文件名,所以将日期的“:”替换为“-”

            string Temp_Name = @"D:\\Application\\Visual Studio 2010\\Projects\\富文本转Word\\富文本转Word\\temp\\Articles.html";//HTML模板的路径

            string File_Name = @"D:\\Application\\Visual Studio 2010\\Projects\\富文本转Word\\富文本转Word\\html\\【" + dt.ToShortDateString().Replace("/","-") +"】" +name + ".html";//生成html文件的路径

            string File_NameM = @"D:\\Application\\Visual Studio 2010\\Projects\\富文本转Word\\富文本转Word\\html\\【" + dt.ToShortDateString().Replace("/","-") +"】" +name + ".mht";//生成mht文件的路径

            string File_Name2 = @"D:\\Application\\Visual Studio 2010\\Projects\\富文本转Word\\富文本转Word\\html\\【" + dt.ToShortDateString().Replace("/", "-") + "】" + name + ".doc";//生成Word文档的路径

            StreamReader sr = new StreamReader(Temp_Name);

            StringBuilder htmltext = new StringBuilder();

            String line;

            while ((line = sr.ReadLine()) != null)

            

                htmltext.Append(line);//读取到html模板的内容

            

            sr.Close();

           //替换相应的内容到指定的位置

            htmltext = htmltext.Replace("$htmldata[1]", name);

            htmltext = htmltext.Replace("$htmldata[2]", name);

            htmltext = htmltext.Replace("$htmldata[3]", ("点击数:" + hits + " 发布时间:" + addTime + "  发布者:" + user));

            htmltext = htmltext.Replace("$htmldata[4]", content);

            using (StreamWriter sw = new StreamWriter(File_Name, false, System.Text.Encoding.GetEncoding("UTF-8"))) //保存地址

            

                //生成HTML文件

sw.WriteLine(htmltext);

                sw.Flush();

                sw.Close();

            

            HtmlToMht(File_Name, File_NameM);//因为带图片的html直接转为Word的话,图片会以引用的形式展示(也就是说不是内置到word文档里去的,一旦断网或将图片放在别的路径之后,打开word文档图片会显示不出来,所以通过折冲的办法先生成html,然后转换为mht,再转为word)

            WordAction.SaveAsWord(File_NameM, File_Name2);//生成word

        

    

    建立另外一个操作word 的静态类,代码如下(代码都是拷的O(∩_∩)O):

    public class WordAction

    

        public static void SaveAsWord(string fileName, string pFileName)//使用原生方法将mht转换为word文档,不是那种直接修改后缀名的方式

        

            object missing = System.Reflection.Missing.Value;

            object readOnly = false;

            object isVisible = true;

            object file1 = fileName;

            object html1 = pFileName;

            object format = WdSaveFormat.wdFormatDocument;

            ApplicationClass oWordApp = new ApplicationClass();

            oWordApp.Visible = false;

            Document oWordDoc = oWordApp.Documents.Open(ref   file1, ref   format, ref  readOnly,ref   missing, ref   missing, ref   missing, ref   missing, ref   missing, ref  missing, ref   missing, ref   missing, ref   missing, ref   missing, ref   missing, ref  missing, ref missing);

            oWordApp.ActiveWindow.View.Type = Microsoft.Office.Interop.Word.WdViewType.wdPrintView;//将web视图修改为默认视图,不然打开word的时候会以web视图去展示,而不是默认视图。(唯独这句代码是自己加的 = =|||)

            oWordDoc.SaveAs(ref   html1, ref   format, ref   missing, ref   missing, ref   missing, ref   missing, ref   missing, ref   missing, ref   missing, ref   missing, ref   missing,ref   missing, ref   missing, ref   missing, ref   missing, ref   missing);

            oWordDoc.Close(ref     missing, ref     missing, ref     missing);

            oWordDoc = null;

            oWordApp.Application.Quit(ref   missing, ref   missing, ref   missing);

            oWordApp = null;

            killAllProcess();

 

        

        protected static void killAllProcess() // 杀掉所有winword.exe进程

        

            System.Diagnostics.Process[] myPs;

            myPs = System.Diagnostics.Process.GetProcesses();

            foreach (System.Diagnostics.Process p in myPs)

            

                if (p.Id != 0)

                

                    string myS = "WINWORD.EXE" + p.ProcessName + "  ID:" + p.Id.ToString();

                    try

                    

                        if (p.Modules != null)

                            if (p.Modules.Count > 0)

                            

                                System.Diagnostics.ProcessModule pm = p.Modules[0];

                                myS += "\\n Modules[0].FileName:" + pm.FileName;

                                myS += "\\n Modules[0].ModuleName:" + pm.ModuleName;

                                myS += "\\n Modules[0].FileVersionInfo:\\n" + pm.FileVersionInfo.ToString();

                                if (pm.ModuleName.ToLower() == "winword.exe")

                                    p.Kill();

                            

                    

                    catch

                    

                    finally

                    

                    

                

            

        

    

第三步:

     随便建了个aspx页面,写上以下代码。

string title = "";

string postuser = "";

string content = "";

string addTime = "";

string hits = "";

DataTable dt = CatalogAccess.GetArticles();//从数据库取出自己需要的数据

            for (int i = 0; i < dt.Rows.Count; i++)

            

                DataRow dr = dt.Rows[i];

                title = dr["Title"].ToString();

                postuser = dr["PostUser"].ToString();

                addTime = dr["AddTime"].ToString();

                hits = dr["Hits"].ToString();

                content = dr["Content"].ToString();

                content = content.Replace("src=\\"/new/Editor/uploadfile/", "src=\\"files/");//替换图片文件的引用目录,这个动作是非必要的,因为我把图片都下载到本地了,所以替换一下里面引用的图片路径,只要根据模板生成的html能正常显示图片就可以了

                Function.WriteHtml(title, content, addTime, hits, postuser);//生成word文档

                

            

            好了,大功告成啦。当然生成的word文档跟网页存在一点差别,在接受的范围内。

参考技术A 在Word里面打开mht文件,然后再另存为DOC或DOCX文档本回答被提问者采纳 参考技术B 这好办

word 2003 文件->打开,文件类型选择所有网页(*.mht,*.htm..),确定就行



楼主给分吧

Word怎么转成pdf格式,word转pdf的小技巧

Word怎么转成pdf格式?word是职场办公中较多使用得文件编辑工具,而pdf文件格式则是职场办公当中文件保存、文件阅读、打印的首选。因此在工作当中就经常会与遇到,使用word制作好文件后,需要转换为pdf格式进行保存。有很多刚刚入职的职场新人,对有关pdf文件格式转换并不是很了解,毕竟在此之前他们很少接触pdf文件。今天小编就将教给大家如何将word文件转换为pdf格式,word转pdf的小技巧。

技术分享图片

1.刚接触pdf文件的小伙伴,可能还不知道pdf文件的特性。那就是文件本身打开无法进行编辑修改,所以关于pdf文件的转换操作就需要找到其它方法。小伙伴们可先打开浏览器,搜索关键词word转pdf在线转换,再点击进入到页面中。
技术分享图片

2.在页面中使用鼠标点击文档转换选项,然后该选项下方就会出现多个功能选项。鼠标点击选中其中的Word转PDF。
技术分享图片

3.接着将转入新页面中,鼠标左击页面里的点击选择文件选项,就能把要转换的word文件添加到页面里。然后再将页面内下方的自定义设置转换中的各个选项,按照自己的转换要求设定好。
技术分享图片

4.当文件添加到页面后,在文件缩略图的右下角有个开始转换选项,鼠标点击它。该页面就会开始word转pdf的转换操作了。
技术分享图片

5.当转换完成后,先点击文件缩略图下的预览选项,查看文件是否完成转换。然后再点击右下角的立即下载选项,把转换后的pdf文件保存到自己的电脑里就可以了。
技术分享图片

6.上方只是实现word转pdf操作的方法之一,下面还将再告诉大家另外种转换方法。先需要小伙伴们在电脑里准备个支持word转pdf操作的pdf转换器。
技术分享图片

7.把电脑里准备好的pdf打开,接着就会进入操作界面。在界面中使用鼠标点击PDF转换选项。
技术分享图片

8.然后在转换器界面内的左侧又会出现两个功能选项,鼠标点击选中其中的其他转PDF,再点击选中下方的Word转PDF。
技术分享图片

9.接下来鼠标点击转换器内的添加文件选项,在跳出的窗口里找到要转换的word文件,再使用鼠标双击文件名将其添加到转换器中。
技术分享图片

10.紧接着就要为转换后的pdf文件设置个保存地址。鼠标点击转换器内的自定义选项,再点击右边的浏览选项,就能为转换后的pdf文件在电脑里设置个保存地址。
技术分享图片

11.此时大家就可使用手里的鼠标点击转换器内右下角的开始转换选项,或点击状态选项下方框内的播放图标,都能让转换器正式开始转换操作。
技术分享图片

12.稍加等待后,转换就会完成。鼠标点击转换器中打开选项下的文件夹图标,就能让转换后的pdf文件自动打开进行查看。如果点击分享选项下的图标,则可将转换后的pdf文件,发送给其他人。
技术分享图片

Word转pdf对于每位职场员工来说都是必备技能,因此刚刚进入职场的小伙伴们需要抓紧学习、掌握这项操作以及相关操作。在文章中小编告诉了大家word怎么转成pdf格式,word转pdf的小技巧。希望此次文章内容,能给大家带来收获。

以上是关于如何将mht转成word格式的主要内容,如果未能解决你的问题,请参考以下文章

如何将word 文件.docx转成.PDF文件

如何将word转成html格式

如何将word文档内容在网页显示方法

如何将html 转成word文件

如何将excel表格转成在线文档

Java如何将Word文件转成PDF文件