Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/263.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何阅读;。“文件”;文件或如何将其转换为";。docx“;使用ASP.NET_C#_Asp.net_Ms Word_.doc - Fatal编程技术网

C# 如何阅读;。“文件”;文件或如何将其转换为";。docx“;使用ASP.NET

C# 如何阅读;。“文件”;文件或如何将其转换为";。docx“;使用ASP.NET,c#,asp.net,ms-word,.doc,C#,Asp.net,Ms Word,.doc,这里是我面临的两个问题,在这两个问题中,有一个应该解决,以使我的项目工作 以下是: 如何在不使用Word automation或任何付费SDK(如Aspose.Words)的情况下读取“.doc”文件 (如果第一个不可能,则) 如何将“.doc”文件转换为“.docx”不使用Word automation或任何付费SDK,如Aspose.Words 搜索了很多,我只找到了.docx的开源解决方案 这是在服务器上完成的,所以那里没有安装Word。如果您想要开源,可以使用OpenXML SDK。

这里是我面临的两个问题,在这两个问题中,有一个应该解决,以使我的项目工作

以下是:

  • 如何在不使用Word automation或任何付费SDK(如Aspose.Words)的情况下读取“.doc”文件

    (如果第一个不可能,则)

  • 如何将“.doc”文件转换为“.docx”不使用Word automation或任何付费SDK,如Aspose.Words

  • 搜索了很多,我只找到了.docx的开源解决方案


    这是在服务器上完成的,所以那里没有安装Word。

    如果您想要开源,可以使用
    OpenXML SDK
    。或者在.NET中有一个使用Interop.Word API的选项。您可以使用此api打开文件并将其另存为docx


    但是这需要在机器上安装word。

    有一个Microsoft批量转换工具可以实现这一点。我找到了一份工作


    否则,我认为你别无选择,只能使用文字自动化。毕竟,即使是OpenOffice也很难打开一些.doc文件并将其转换为.docx/OpenXML,这意味着自己编写任何类型的解析工具都会很麻烦。

    看一看——它是用.NET编写的,是免费的开源工具。打算在将来支持创建新格式,但目前您可以使用它读取旧格式,并使用其他解决方案编写新格式,这是一个开放标准(请参阅)。

    您可能希望尝试一下这个纯.NET解决方案:


    它不需要您在服务器上安装任何Office应用程序。

    我也遇到了同样的问题。如果要将.doc转换为.docx,可以使用Microsoft.Office.Interop.Word库。它对我有用。这是代码

        using System;
        using System.Collections.Generic;
        using System.Linq;
        using System.Text;
        using System.Threading.Tasks;
        using Word = Microsoft.Office.Interop.Word;
        using System.Reflection;
        using System.IO;
    
    
    namespace ConsoleApplication2
    {
        class Program
        {
            static void Main(string[] args)
            {
    
                Word._Application application = new Word.Application();
                object fileformat = Word.WdSaveFormat.wdFormatXMLDocument;
                DirectoryInfo directory = new DirectoryInfo(@"D:\abc");
                foreach (FileInfo file in directory.GetFiles("*.doc", SearchOption.AllDirectories))
                {
                    if (file.Extension.ToLower() == ".doc")
                    {
                        object filename = file.FullName;
                        object newfilename = file.FullName.ToLower().Replace(".doc", ".docx");
                        Word._Document document = application.Documents.Open(filename);
    
                        document.Convert();
                        document.SaveAs(newfilename, fileformat);
                        document.Close();
                        document = null;
                    }
                }
                application.Quit();
                application = null;
    
    
    
    
            }
        }
    }
    

    它也适用于您。

    参考线程-进一步参考线程-Op指定不允许安装Word。这需要在服务器上安装Microsoft Office Compatibility Pack,因此这不是正确的安装。两点:在原始帖子中指定了“no Word”。我认为MS Office兼容包可以独立安装。其次,其中可能用于此目的的实用程序,如“C:\Program Files\Microsoft Office\Office12\wordconv.exe”-oice-nme,可能独立工作,也可能没有多少依赖项。可能值得一试。我同意,但我不确定这一点,因为这不是我自己的服务器,我将从主机提供商那里获取空间,因此这可能会导致某些主机出现问题。当然,我理解主机的问题,这是一种痛苦。您可能会发现,您可以将wordconv.exe(可能还有一个或两个其他依赖DLL)部署到您的网站,并从代码中执行它。不确定这将如何飞行许可证明智!:-)在此阶段,此库似乎仍然不支持为生产使用读取.doc文件。您可以添加一个使用示例吗?@zed I've,示例为
    b2xtranslator.WordprocessingMLMapping.Convert.Convert(新的WordDocument(StructuredStorageReader(fileName)),WordprocessingDocument.Create(fileName+“x”,DocumentType.Document))
    这是Microsoft推荐的与本机Office格式进行互操作的方法:是否需要document.Convert()行?它给我带来了一些问题,我认为.SaveAs()还可以处理转换为fileformat参数的过程。