由于工作需要,改功能已测试OK!

#region 导入word到编辑器


        //Html文件名

        private string _htmlFileName;



        /// <summary>

        /// 上传Word文档

        /// </summary>

        /// <param name="inputFile"></param>

        /// <param name="filePath"></param>

        private string UpLoadFile(HtmlInputFile inputFile)

        {

            string fileName, fileExtension;


            UploadedFile file = RadUploadContext.Current.UploadedFiles[0];


            //string Path = Server.MapPath(@"Uploads");


            ////如果路径不存在,则创建

            //if (System.IO.Directory.Exists(Path) == false)

            //{

            //    System.IO.Directory.CreateDirectory(Path);

            //}


            ////组合路径,file.GetName()取得文件名

            //Path = Path + "/" + file.GetName().ToString();

            //file.SaveAs(Path, true);

            fileName = file.GetName();





            //建立上传对象

            //HttpPostedFile postedFile = inputFile.PostedFile;


            //fileName = System.IO.Path.GetFileName(postedFile.FileName);

            fileExtension = System.IO.Path.GetExtension(fileName);


            string phyPath = Server.MapPath("~/") + "Portals\\0\\WordImport\\";


            //判断路径是否存在,若不存在则创建路径

            DirectoryInfo upDir = new DirectoryInfo(phyPath);

            if (!upDir.Exists)

            {

                upDir.Create();

            }


            //保存文件

            try

            {

                file.SaveAs(phyPath + fileName);

            }

            catch

            {


            }


            return phyPath + fileName;

        }


        /// <summary>

        /// word转成html

        /// </summary>

        /// <param name="wordFileName"></param>

        private string WordToHtml(object wordFileName)

        {

            //在此处放置用户代码以初始化页面

            ApplicationClass word = new ApplicationClass();

            Type wordType = word.GetType();

            Documents docs = word.Documents;


            //打开文件

            Type docsType = docs.GetType();

            Document doc = (Document)docsType.InvokeMember("Open",

            System.Reflection.BindingFlags.InvokeMethod, null, docs, new Object[] { wordFileName, true, true });


            //转换格式,另存为

            Type docType = doc.GetType();


            string wordSaveFileName = wordFileName.ToString();

            string strSaveFileName = wordSaveFileName.Substring(0, wordSaveFileName.Length - 3) + "html";

            object saveFileName = (object)strSaveFileName;

            //下面是Microsoft Word 9 Object Library的写法,如果是10,可能写成:

            /*

            docType.InvokeMember("SaveAs", System.Reflection.BindingFlags.InvokeMethod,

             null, doc, new object[]{saveFileName, Microsoft.Office.Interop.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, WdSaveFormat.wdFormatHTML });


            docType.InvokeMember("Close", System.Reflection.BindingFlags.InvokeMethod,

             null, doc, null);


            //退出 Word

            wordType.InvokeMember("Quit", System.Reflection.BindingFlags.InvokeMethod,

             null, word, null);


            return saveFileName.ToString();

        }



        /// <summary>

        /// 读取html文件,返回字符串

        /// </summary>

        /// <param name="strHtmlFileName"></param>

        /// <returns></returns>

        private string getHtml(string strHtmlFileName)

        {

            System.Text.Encoding encoding = System.Text.Encoding.GetEncoding("gb2312");


            StreamReader sr = new StreamReader(strHtmlFileName, encoding);


            string str = sr.ReadToEnd();


            sr.Close();


            return str;

        }

        /// <summary>

        /// 

        /// </summary>

        /// <param name="strHtml"></param>

        /// <returns></returns>

        private void findUsedFromHtml(string strHtml, string strFileName)

        {

            string strStyle;

            string strBody;


            // stytle 部分

            int index = 0;

            int intStyleStart = 0;

            int intStyleEnd = 0;


            while (index < strHtml.Length)

            {

                int intStyleStartTmp = strHtml.IndexOf("<style>", index);

                if (intStyleStartTmp == -1)

                {

                    break;

                }

                int intContentStart = strHtml.IndexOf("<!--", intStyleStartTmp);

                if (intContentStart - intStyleStartTmp == 9)

                {

                    intStyleStart = intStyleStartTmp;

                    break;

                }

                else

                {

                    index = intStyleStartTmp + 7;

                }

            }


            index = 0;

            while (index < strHtml.Length)

            {

                int intContentEndTmp = strHtml.IndexOf("-->", index);

                if (intContentEndTmp == -1)

                {

                    break;

                }

                int intStyleEndTmp = strHtml.IndexOf("</style>", intContentEndTmp);

                if (intStyleEndTmp - intContentEndTmp == 5)

                {

                    intStyleEnd = intStyleEndTmp;

                    break;

                }

                else

                {

                    index = intContentEndTmp + 4;

                }

            }


            strStyle = strHtml.Substring(intStyleStart, intStyleEnd - intStyleStart + 8);


            // Body部分

            int bodyStart = strHtml.IndexOf("<body");

            int bodyEnd = strHtml.IndexOf("</body>");


            strBody = strHtml.Substring(bodyStart, bodyEnd - bodyStart + 7);


            //替换图片地址

            string fullName = strFileName.Substring(strFileName.LastIndexOf("\\") + 1);

            string strOld = fullName.Replace("doc", "files");

            string strNew = Page.Request.ApplicationPath + "/Portals/0/WordImport/" + strOld;


            strBody = strBody.Replace(strOld, strNew);

            strBody = strBody.Replace("v:imagedata", "img");

            strBody = strBody.Replace("</v:imagedata>", "");


            //this.TextBox1.Text = strBody;

            //  this.TextArea1.InnerText = strStyle;

            this.content.Value = strStyle + strBody;

        }

        #endregion

posted on 2010-07-01 15:09  酷&酷  阅读(1173)  评论(1编辑  收藏  举报