似乎找不到正确的语法来创建一个Word文档。

问题描述 投票:0回答:1

我想做一个基本的控制台应用程序,创建一个新的Word文档,添加文本,然后保存到文件中。起初我试图使用Docx nuget包,但我在某处读到它可能不再是免费的了。当我尝试使用那个包时,当我试图从头开始创建一个新的Docx文件时,我得到了一个文件未找到的错误,当我尝试使用下面的代码时,我仍然得到同样的错误。Microsoft.Office.Interop.Word 也是。我找到的每个在线解决方案都会返回相同的错误,所以我不确定我的问题是否在于我的引用或可能是一般的文件访问。先谢谢你的帮助。

错误:System.IO.FileNotFound

System.IO.FileNotFoundException: '无法加载文件或汇编'office,Version=15.0.0.0,Culture=neutral,PublicKeyToken=71e9bce111e9429c'。系统找不到指定的文件'。

static void Main(string[] args)
    {

        Word.Application app = new Word.Application();

        Word.Document doc = app.Documents.Add();

        Word.Paragraph newParagraph;

        newParagraph = doc.Paragraphs.Add();
        newParagraph.Range.Text = "Document Creation Successful";

        doc.SaveAs2("test.docx");
        doc.Close();
        app.Quit();
    }

项目文件。

<Project Sdk="Microsoft.NET.Sdk">

  <PropertyGroup>
    <OutputType>Exe</OutputType>
    <TargetFramework>netcoreapp3.1</TargetFramework>
    <RootNamespace>Document_Generation</RootNamespace>
  </PropertyGroup>

  <ItemGroup>
    <COMReference Include="Microsoft.Office.Word.dll">
      <Guid>00020905-0000-0000-c000-000000000046</Guid>
      <VersionMajor>8</VersionMajor>
      <VersionMinor>7</VersionMinor>
      <WrapperTool>tlbimp</WrapperTool>
      <Lcid>0</Lcid>
      <Isolated>false</Isolated>
    </COMReference>
  </ItemGroup>

  <ItemGroup>
    <PackageReference Include="DocX" Version="1.6.0" />
  </ItemGroup>

</Project>
c# ms-word docx
1个回答
0
投票

你必须在项目引用中添加两个Office互操作文件。

  1. Office的核心命名空间是由 Office.dll 库。这是一个提供共享功能的Microsoft Office对象库。
  2. Word对象模型由 Microsoft.Office.Word.dll 库。
<Project Sdk="Microsoft.NET.Sdk">

  <PropertyGroup>
    <OutputType>Exe</OutputType>
    <TargetFramework>netcoreapp3.1</TargetFramework>
    <RootNamespace>Document_Generation</RootNamespace>
  </PropertyGroup>

  <ItemGroup>
    <COMReference Include="Microsoft.Office.Word.dll">
      <Guid>00020905-0000-0000-c000-000000000046</Guid>
      <VersionMajor>8</VersionMajor>
      <VersionMinor>7</VersionMinor>
      <WrapperTool>tlbimp</WrapperTool>
      <Lcid>0</Lcid>
      <Isolated>false</Isolated>
    </COMReference>

    <COMReference Include="office.dll">
      <Guid>2DF8D04C-5BFA-101B-BDE5-00AA0044DE52</Guid>
      <VersionMajor>2</VersionMajor>
      <VersionMinor>8</VersionMinor>
      <WrapperTool>tlbimp</WrapperTool>
      <Lcid>0</Lcid>
      <Isolated>false</Isolated>
    </COMReference>
  </ItemGroup>

</Project>

作为一个例子,你可以尝试创建一个基于.Net框架的控制台应用程序示例,并尝试向Word添加一个COM引用。然后你可以观察到添加的所需引用(在这里你也可以抓取所需的interop文件)。

你可以阅读更多关于Office Interop程序集的内容。办事处的主要交互式组件 页面。


-2
投票

如果你是在Visual Studio中做的(我建议你这样做),我会做这样的事情(改变目录和文本,无论你喜欢什么)。

File.Create("C:/test.docx").Dispose();
File.AppendAllText("D:/test.docx", "test text");
© www.soinside.com 2019 - 2024. All rights reserved.