• Office转HTML


        /// <summary>
            /// word转成html
            /// </summary>
            /// <param name="path"></param>
            public static string WordToHtml(string path)
            {
                //在此处放置用户代码以初始化页面
                Word.Application word = new Word.Application();
                Type wordType = word.GetType();
                Word.Documents docs = word.Documents;
                Type docsType = docs.GetType();
                try
                {
                    Word.Document doc =(Word.Document)docsType.InvokeMember("Open", System.Reflection.BindingFlags.InvokeMethod, null, docs,new Object[] {path, true, true});
                    //转换格式,另存为
                    Type docType = doc.GetType();
                    string strSaveFileName = path.Substring(0, path.LastIndexOf('.')) + ".html";
                    object saveFileName = (object) strSaveFileName;
                    docType.InvokeMember("SaveAs", System.Reflection.BindingFlags.InvokeMethod, null, doc,
                        new object[] {saveFileName, Word.WdSaveFormat.wdFormatHTML});
                    docType.InvokeMember("Close", System.Reflection.BindingFlags.InvokeMethod, null, doc, null);
                    return saveFileName.ToString();
                }
                catch
                {
                    throw new Exception("文件转换出错");
                }
                finally
                {
                    //退出 Word
                    wordType.InvokeMember("Quit", System.Reflection.BindingFlags.InvokeMethod, null, word, null);
                    GC.Collect();
                    GC.WaitForPendingFinalizers();
                }
            }
    
            /// <summary>
            /// word转成html带分页
            /// </summary>
            /// <param name="path"></param>
            /// <param name="id"></param>
            public static ResultDTO WordToHtmls(string path, string id)
            {
                FileInfo f = new FileInfo(path);
                if (!f.Exists)
                    return null;
    
                var basePath = path.Substring(0,path.IndexOf("DownLoads", StringComparison.Ordinal));
                //转换文件根路径
                string root = basePath + "DownLoads/Html/";
                if (!Directory.Exists(@root + id))
                {
                    Directory.CreateDirectory(@root + id);
                }
    
                Word.Document doc = null;
                var pages = "";
                Word.Application word = new Word.Application();
                Type wordType = word.GetType();
                Word.Documents docs = word.Documents;
                Type docsType = docs.GetType();
                try
                {
                    object oMissing = System.Reflection.Missing.Value;
                    doc =(Word.Document)docsType.InvokeMember("Open", System.Reflection.BindingFlags.InvokeMethod, null, docs,new Object[] {path, true, true});
                    bool flag = true;
                    int index = 1;
                    do
                    {
                        object objWhat = Word.WdGoToItem.wdGoToPage;
                        object objWhich = Word.WdGoToDirection.wdGoToAbsolute;
                        object objPage = index;
                        Word.Range range1 = doc.GoTo(ref objWhat, ref objWhich, ref objPage, ref oMissing);
                        Word.Range range2 = range1.GoToNext(Word.WdGoToItem.wdGoToPage);
                        object objStart = range1.Start;
                        object objEnd = range2.Start;
                        if (range1.Start == range2.Start)
                        {
                            objEnd = range2.StoryLength;
                            flag = false;
                        }
    
                        doc.Range(ref objStart, ref objEnd).Copy();
                        Word.ApplicationClass wordapp = new Word.ApplicationClass();
                        Word.Document doc2 = wordapp.Documents.Add(ref oMissing, ref oMissing, ref oMissing, ref oMissing);
                        Word.Paragraph para = doc2.Content.Paragraphs.Add(ref oMissing);
                        para.Range.Paste();
                        var pagepath = id + "/" + index + ".html";
                        doc2.GetType().InvokeMember("SaveAs", System.Reflection.BindingFlags.InvokeMethod, null, doc2,
                            new object[] {root + pagepath, Word.WdSaveFormat.wdFormatHTML});
                        wordapp.GetType().InvokeMember("Quit", System.Reflection.BindingFlags.InvokeMethod, null, wordapp, null);
                        pages += pagepath + ",";
                        index++;
                    } while (flag);
    
                    object saveOption = Word.WdSaveOptions.wdDoNotSaveChanges;
                    doc.Close(ref saveOption, ref oMissing, ref oMissing);
                    return new ResultDTO
                    {
                        status = true,
                        info = pages.Substring(0, pages.Length - 1)
                    };
                }
                catch (Exception e)
                {
                    log.Error(e.Message);
                    return new ResultDTO
                    {
                        status = false,
                        info = e.Message
                    };
                }
                finally
                {
                    wordType.InvokeMember("Quit", System.Reflection.BindingFlags.InvokeMethod, null, word, null);
                    GC.Collect();
                    GC.WaitForPendingFinalizers();
                }
            }
    
            /// <summary>
            /// Excel转成html
            /// </summary>
            /// <param name="path"></param>
            /// <param name="id"></param>
            public static ResultDTO ExcelToHtml(string path,string id)
            {
                FileInfo f = new FileInfo(path);
                if (!f.Exists)
                    return null;
    
                var basePath = path.Substring(0, path.IndexOf("DownLoads", StringComparison.Ordinal));
                //转换文件根路径
                string root = basePath + "DownLoads/Html/";
                if (!Directory.Exists(@root + id))
                {
                    Directory.CreateDirectory(@root + id);
                }
    
                Excel.Application repExcel = new Excel.Application();//实例化Excel
                Excel.Workbook workbook = null;
                try
                {
                    workbook = repExcel.Application.Workbooks.Open(path, Type.Missing, Type.Missing, Type.Missing,
                        Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing,
                        Type.Missing, Type.Missing, Type.Missing, Type.Missing);
                    object htmlFile =id + "/" + id + ".html"; 
                    object ofmt = Excel.XlFileFormat.xlHtml;
                    workbook.SaveAs(root + htmlFile, ofmt, Type.Missing, Type.Missing, Type.Missing, Type.Missing,
                        Excel.XlSaveAsAccessMode.xlNoChange, Type.Missing, Type.Missing, Type.Missing, Type.Missing,
                        Type.Missing); // 进行另存为操作   
                    return new ResultDTO
                    {
                        status = true,
                        info = htmlFile.ToString()
                    };
                }
                catch(Exception e)
                {
                    log.Error(e.Message);
                    return new ResultDTO
                    {
                        status = false,
                        info = e.Message
                    };
                }
                finally
                {
                    if (workbook != null)
                    {
                        workbook.Close(true, Type.Missing, Type.Missing);
                    }
                    repExcel.Quit();
                    GC.Collect();
                    GC.WaitForPendingFinalizers();
                    GC.Collect();
                    GC.WaitForPendingFinalizers();
                }
            }
        }
    
        /// <summary>
        /// 输出结果
        /// </summary>
        public class ResultDTO
        {
            public bool status; //状态
            public string info; //详情
        }
    注:此处获取文档页数不可用以下方法获取,因为它表示的页数是指页面视图的页大小,并不是页面视图的页大小。
                    Word.WdStatistic stat = Word.WdStatistic.wdStatisticPages;
                    file_pages = doc.ComputeStatistics(stat, ref missing);
  • 相关阅读:
    YAML 语法
    mysqladmin
    CentOS7
    MySQL 基准测试
    Sqlite 约束条件 Constraints
    sqlite3数据库 sqlite3_get_table
    MFC中使用sqlite3操作数据库
    数据库函数:sqlite3_exec() SQL语句
    VS2013 生成sqlite3动态连接库及sqlite3.dll的调用
    Windows下VS2013创建与使用动态链接库(.dll)
  • 原文地址:https://www.cnblogs.com/xuhang/p/5402465.html
Copyright © 2020-2023  润新知