zoukankan      html  css  js  c++  java
  • .net 上传word 转为 html

    前台:



           <tr>
           <td align="center">word上传</td>
           <td> 
    <asp:FileUpload runat="server" ID="File1" />
           </td>
           </tr>

    后台


    /*上传类*/
    //  public WordToHTML() { }


            #region 上传文件并转换为html wordToHtml(wordFilePath)
            /// 
            /// 上传文件并转存为html
            /// 
            /// word文档在客户机的位置
            /// 上传的html文件的地址
            public string wordToHtml(System.Web.UI.WebControls.FileUpload wordFilePath)
            {
                Microsoft.Office.Interop.Word.ApplicationClass word = new Microsoft.Office.Interop.Word.ApplicationClass();
                Type wordType = word.GetType();
                Microsoft.Office.Interop.Word.Documents docs = word.Documents;


                // 打开文件
                Type docsType = docs.GetType();


                //应当先把文件上传至服务器然后再解析文件为html
                string filePath = uploadWord(wordFilePath);


                //判断是否上传文件成功
                if (filePath == "0")
                    return "0";
                //判断是否为word文件
                if (filePath == "1")
                    return "1";


                object fileName = filePath;


                Microsoft.Office.Interop.Word.Document doc = (Microsoft.Office.Interop.Word.Document)docsType.InvokeMember("Open",
                System.Reflection.BindingFlags.InvokeMethod, null, docs, new Object[] { fileName, true, true });
                doc.WebOptions.Encoding = Microsoft.Office.Core.MsoEncoding.msoEncodingUTF8;  //设置编码,以便ajax读取


                // 转换格式,另存为html
                Type docType = doc.GetType();


                string filename = System.DateTime.Now.Year.ToString() + System.DateTime.Now.Month.ToString() + System.DateTime.Now.Day.ToString() +
                System.DateTime.Now.Hour.ToString() + System.DateTime.Now.Minute.ToString() + System.DateTime.Now.Second.ToString();


                //被转换的html文档保存的位置
                string ConfigPath = HttpContext.Current.Server.MapPath("upload/" + filename + ".html");
                object saveFileName = ConfigPath;


                /*下面是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, Microsoft.Office.Interop.Word.WdSaveFormat.wdFormatFilteredHTML });


                // 退出 Word
                wordType.InvokeMember("Quit", System.Reflection.BindingFlags.InvokeMethod, null, word, null);
                //转到新生成的页面
                return ("upload/" + filename + ".html");
            }
            #endregion


            public string uploadWord(System.Web.UI.WebControls.FileUpload uploadFiles)
            {
                if (uploadFiles.PostedFile != null)
                {
                    string fileName = uploadFiles.PostedFile.FileName;
                    int extendNameIndex = fileName.LastIndexOf(".");
                    string extendName = fileName.Substring(extendNameIndex);
                    string newName = "";
                    try
                    {
                        //验证是否为word格式
                        if (extendName == ".doc" || extendName == ".docx")
                        {


                            DateTime now = DateTime.Now;
                            newName = now.DayOfYear.ToString() + uploadFiles.PostedFile.ContentLength.ToString();
                            //上传路径 指当前上传页面的同一级的目录下面的wordTmp路径
                            uploadFiles.PostedFile.SaveAs(System.Web.HttpContext.Current.Server.MapPath("wordTmp/" + newName + extendName));
                        }
                        else
                        {
                            return "1";
                        }
                    }
                    catch
                    {
                        return "0";
                    }
                    //return "http://" + HttpContext.Current.Request.Url.Host + HttpContext.Current.Request.ApplicationPath + "/wordTmp/" + newName + extendName;
                    return System.Web.HttpContext.Current.Server.MapPath("wordTmp/" + newName + extendName);
                }


                else
                {
                    return "0";
                }
            }


    /*上传类*/



        protected void Button1_Click(object sender, EventArgs e)
        {
            var filenameurl = "";
            var File1 = FormView1.FindControl("File1") as FileUpload;
            try
            {
                //上传
                uploadWord(File1);
                //转换
                filenameurl = wordToHtml(File1);
            }
            catch (Exception ex)
            {
                throw ex;
            }
            finally
            {
                //Response.Write("恭喜,转换成功!");
            }

    }

  • 相关阅读:
    Game的基本元素.[小糊涂的灵感]
    J2ME图书介绍 [小糊涂的灵感]
    j2me 这个论坛好一点.[小糊涂的灵感]
    Frame rate test for tilebased games 测试结果.[小糊涂的灵感]
    源码方式在ubuntu系统上安装ruby1.9.2
    模块全解======>>ruby的类是单继承生物、所以出现了module、实现了多继承
    在ubuntu下安装rails3.0
    在ubuntu下编写运行shell脚本
    在linux下开远程桌面访问windows的解决方法
    在命令行中打开sqlite的数据库
  • 原文地址:https://www.cnblogs.com/y0umer/p/3839101.html
Copyright © 2011-2022 走看看