自動化工具word文檔批量轉html

企業有不少的科室,科室的每一個人或多或少都會寫一些文檔,有些文檔領導須要瀏覽,解決的辦法是將編輯的文檔打印出來,供領導瀏覽,或是爲了節約企業成本,文檔就在人與人這間或部門之間copy過來,copy過去。若是員工或領導不善於管理文檔,就會形成有不少的版本,或者是在之後沒法輕鬆的找到相關的文檔。html

因此企業專門找到一我的(文檔管理員),讓這我的負責文檔的管理。而文檔的管理的方式有兩種形式,第一種是doc形式的(即word文檔),第二種是分享形式的jquery

對於第一種文檔管理方式,只涉及到這個文檔管理員,收集各部門的文檔,將部門規劃成一種以下圖的形式:jquery插件

而後在部門中再規劃人員,以下圖:工具

 

經過第一種形式,那麼文檔的管理也就解決了。只保存最新文檔,對文檔進行彙總等,若是領導須要什麼文檔的話,只須要讓文檔管理員打印並呈送就能夠了。測試

可是領導或職員須要什麼文檔?領導也不是一臺機器,沒有過目不忘的本領,並不知道公司有什麼文檔?若是文檔中有錯字有誰來發現?因此爲了解決這幾個問題,須要實現文檔的分享,也就是第二種文檔管理方式。網站

解決思路是在局域網中創建一個網站,企業中的任何一我的均可以瀏覽公司的文檔。經過這個網站,企業中的任何一我的也都知道本企業有什麼文檔,尋找資料也會方便些。ui

網站也很簡單,只須要實現目錄結構上的複製,部門對應部門,人員對應人員。再把doc轉換成html,文檔名稱對應頁面名稱。而後再自動生成網站首頁,這個網站也就作完了。this

技術實現:
在這裏只是大致介紹一下,若是須要了解技術詳細的話,能夠下載下面的源代碼。google

1.給定須要轉換的目錄(包含word文檔的目錄)和輸出目錄
2.讀取目錄中的全部word文檔
3.將全部的word文章轉換成Html文件,並將html文件保存到輸出目錄下對應的目錄(即部門對應部門,人員對應人員),代碼以下spa

public void ToHtml(string filePath)  
{
    this.FilePath = filePath;
    Word.Application word = new Word.Application();
    Type wordType = word.GetType();
    Word.Documents docs = word.Documents;
    Type docsType = docs.GetType();
    Word.Document doc = (Word.Document)docsType.InvokeMember("Open",
        System.Reflection.BindingFlags.InvokeMethod, null, docs,
        new Object[] { (object)FilePath, true, true }); //打開word文檔
    Type docType = doc.GetType();
    CreateDirectory(TargetDirectoryPath);  //源目錄對應目標目錄 
    string strSaveFileName = TargetFilePath;  //轉換成目標文件路徑
    object saveFileName = (object)strSaveFileName;
    //另存爲html,關閉文檔並退出
    docType.InvokeMember("SaveAs", System.Reflection.BindingFlags.InvokeMethod,
        null, doc, new object[] { saveFileName, Word.WdSaveFormat.wdFormatFilteredHTML });
    docType.InvokeMember("Close", System.Reflection.BindingFlags.InvokeMethod, null, doc, null);
    wordType.InvokeMember("Quit", System.Reflection.BindingFlags.InvokeMethod, null, word, null);
}

word轉爲html後,測試頁面樣式:

4.生成首頁,並將首頁保存到輸出目錄下。爲使首頁結構清晰,使用了jquery插件treeview。

public string ToHtmlStructure(DirectoryInfo directory)
{
            
    FileInfo[] files = null;
    DirectoryInfo[] subDirs = null;
    files = directory.GetFiles("*.*");
    _sb.AppendLine(AddUl());
    foreach (FileInfo fi in files)
    {

        string relativelinks = Uri.EscapeUriString(fi.FullName.Replace(string.Format(@"{0}\", DirectoryPath), "").Replace('\', '/'));
        _sb.AppendLine(string.Format("<li><a href='{0}' target='_blank'>{1}</a></li>",relativelinks, fi.Name));
    }
    subDirs = directory.GetDirectories();
    foreach (DirectoryInfo dirInfo in subDirs)
    {
        _sb.AppendLine("<li>");
        _sb.AppendLine(dirInfo.Name);
        ToHtmlStructure(dirInfo);
        _sb.AppendLine("</li>");
    }
    _sb.AppendLine("</ul>");
    return _sb.ToString();
}

生成的首頁顯示大致以下(非企業的文檔,而是本身的文檔):

開發環境:win7+vs2010+office2007

測試環境:win7+office2007

總結:
在開發這個工具時,最主要的仍是word轉html。而我使用的方式是com方法調用word的open,saveas,close和quit。這種方式會在word的最近瀏覽記錄中留下信息,以下:

而且html的生成徹底由word控制,生成的html的樣式也徹底由word控制。有的文章轉換爲html後,顯得html內容不美觀。我測試了一下,安裝不一樣的office版本,office2003(沒法轉換高版本的文檔),office2007,office2010,版本越高,轉換後的html樣式越好。

我也在網上尋找了word轉html的控制方式(包括國內的、國外的),發現若是想徹底控制轉換,彷佛是不可能的。固然也有doc轉換工具,如google doc。不知道我這個觀點對不對?

 

源代碼下載:源碼Convertor.rar

相關文章
相關標籤/搜索