如何将.doc或.docx转换为html c#

时间:2013-09-18 09:58:02

标签: c# asp.net .doc

帮助我,我知道如何结合这些代码。希望有人能帮助我。我在asp.net中使用c#并尝试将.doc和.docx转换为html以在网页中查看。

这是我的代码:

public bool WriteViewRow(DataRowView drv)
    {
        string strFileLink = null;
        string strFileName = Convert.ToString(drv["Name"]);
        string strFilePath = WebPathCombine(WebPath(), strFileName);
        bool blnFolder = IsDirectory(drv);

        if (blnFolder)
        {
            if (!string.IsNullOrEmpty(_strHideFolderPattern) && Regex.IsMatch(strFileName, _strHideFolderPattern, RegexOptions.IgnoreCase))
            {
                return false;
            }
            strFileLink = PageUrl(strFilePath) + strFileName + "</A>";
        }
        else
        {
            if (!string.IsNullOrEmpty(_strHideFilePattern) && Regex.IsMatch(strFileName, _strHideFilePattern, RegexOptions.IgnoreCase))
            {
                return false;
            }
              strFileLink = "<A href=\"" + strFilePath + "\" target = \"iframe01\">" + strFileName + "</A>";         //link to open the file
        }

我想使用此代码加入我的代码,我不想上传文件,但想使用上面代码中的链接来集成此代码:

//To check the file extension if it is word document or something else
string strFileName = fUpload.FileName;
string[] strSep = fUpload.FileName.Split('.');
int arrLength = strSep.Length - 1;
string strExt = strSep[arrLength].ToString().ToUpper(); //Save the uploaded file to the folder
strPathToUpload = Server.MapPath("Datadir");  //Map-path to the folder where html to be saved
strPathToConvert = Server.MapPath("WordToHtml");
object FileName = strPathToUpload + "\\" + fUpload.FileName;
object FileToSave = strPathToConvert + "\\" + fUpload.FileName + ".htm";

if (strExt.ToUpper() == "DOCX" || strExt.ToUpper() == "DOC" )
{

    fUpload.SaveAs(strPathToUpload + "\\" + fUpload.FileName);
    lblMessage.Text = "File uploaded successfully";
    //open the file internally in word. In the method all the parameters should be passed by object reference

    objWord.Documents.Open(ref FileName, ref readOnly, ref missing, ref missing, ref missing, ref missing,
    ref missing, ref  missing, ref missing, ref missing, ref isVisible, ref missing, ref missing, ref missing,
    ref missing, ref missing);

    //Do the background activity
    objWord.Visible = false;
    Microsoft.Office.Interop.Word.Document oDoc = objWord.ActiveDocument;

    oDoc.SaveAs(ref FileToSave, ref fltDocFormat, 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);

    lblMessage.Text = fUpload.FileName + " converted to HTML successfully";
    docPreview.Attributes["src"] = "../WordToHtml/" + fUpload.FileName + ".htm";

}

任何人都有一些建议吗?其实我想开发一些像webmanager这样的网页,用户可以上传,删除,查看,编辑文件..如果文件.txt ...但我无法转换这一切都已经完成了。

2 个答案:

答案 0 :(得分:1)

您要使用的代码是使用文字自动化。这是在服务器环境(如你的asp.net)上做的不好的做法,因为有很多问题,而且强烈建议不要这样做。阅读here

的原因

相反,寻找能够为您完成这项工作的工具,例如this answer。在大多数情况下,这些工具不会在html中逐字显示文档,但这取决于文档的结构和简单性。

答案 1 :(得分:1)

希望,此代码对u.and代码有帮助,使用Microsoft.Office.Interop.Word类

    public static string ReadWordFile(string strFilePath, Extension objExtension)
    {
        string strFileContent = string.Empty;
        try
        {
            if (objExtension == Extension.WebPage)
            {
                try
                {
                    Open(strFilePath);
                    strFileContent = ClsCommon.HTMLBody(ClsCommon.ReadFile(SaveAs(strFilePath, HtmExtension, WdSaveFormat.wdFormatFilteredHTML), true));
                }
                catch
                {
                }
            }
        }
        catch
        {
        }
        return strFileContent;
    }

      private static string SaveAs(string FilePath, string strFileExtension,    WdSaveFormat objSaveFormat)
    {
        try
        {
            FilePath = System.IO.Path.ChangeExtension(FilePath, strFileExtension);
            doc.SaveAs(FilePath, objSaveFormat, objMissing, objMissing, objMissing, objMissing, objMissing, objMissing, objMissing, objMissing, objMissing, objMissing, objMissing, objMissing, objMissing, objMissing);
        }
        catch
        {

        }
        finally
        {
            Close();
        }
        return FilePath;
    }

    public static string HTMLBody(string strHTML)
    {
        strHTML = ClearHTMLContent(strHTML);
        if (strHTML.ToLower().IndexOf("<body") > 0 && strHTML.ToLower().IndexOf("</body>") > 0)
        {
            strHTML = strHTML.Substring(strHTML.ToLower().IndexOf("<body") + 5, strHTML.ToLower().IndexOf("</body>") - (strHTML.ToLower().IndexOf("<body") + 5));
            strHTML = strHTML.Substring(strHTML.IndexOf(">") + 1, strHTML.Length - (strHTML.IndexOf(">") + 1));
        }
        return strHTML;
    }

    public static string ClearHTMLContent(string Str)
    {
        if (Str.ToLower().IndexOf("<base") > 0)
        {
            Str = Str.Replace(Str.Substring(Str.ToLower().IndexOf("<base"), Str.Substring(Str.ToLower().IndexOf("<base")).IndexOf(">") + 1), "");
        }
        return Str.Replace("Â", "").Replace("�", "");
    }