gpt4 book ai didi

visual-studio - 如何从 Visual Studio C# 使用 Office?

转载 作者:行者123 更新时间:2023-12-01 18:18:49 25 4
gpt4 key购买 nike

在 Visual Studio 中添加对 Office 的 COM 互操作的引用的技术是:

  • 引用文献
  • 添加引用
  • 选择 COM 标签
  • 选择 Microsoft Office 11.0 对象库

  • 出现神奇命名的引用:
    Microsoft.Office.Core
    Project.csproj文件显示了引用的详细信息:
    <COMReference Include="Microsoft.Office.Core">
    <Guid>{2DF8D04C-5BFA-101B-BDE5-00AA0044DE52}</Guid>
    <VersionMajor>2</VersionMajor>
    <VersionMinor>3</VersionMinor>
    <Lcid>0</Lcid>
    <WrapperTool>primary</WrapperTool>
    <Isolated>False</Isolated>
    </COMReference>

    该项目已 checkin 源代码管理,一切正常。

    然后是 的开发人员Office 2007 从源代码管理中获取项目,并且无法构建它,因为这样的引用不存在。

    他(即我)检查了 .csproj 文件,删除了对
    Microsoft Office 11.0 Object Library

    并将 COM 引用重新添加为
    Microsoft Office 12.0 Object Library

    并且神奇地出现了一个命名引用:
    Microsoft.Office.Core
    Project.csproj文件显示了引用的详细信息:
    <COMReference Include="Microsoft.Office.Core">
    <Guid>{2DF8D04C-5BFA-101B-BDE5-00AA0044DE52}</Guid>
    <VersionMajor>2</VersionMajor>
    <VersionMinor>4</VersionMinor>
    <Lcid>0</Lcid>
    <WrapperTool>primary</WrapperTool>
    <Isolated>False</Isolated>
    </COMReference>

    该项目已 checkin 源代码管理,一切正常。

    然后是 的开发人员办公室2003 从源代码管理中获取项目,并且无法构建它,因为这样的引用不存在。

    他(即不是我)检查了 .csproj 文件,删除了对
    Microsoft Office 12.0 Object Library

    并将 COM 引用重新添加为
    Microsoft Office 11.0 Object Library

    并且神奇地出现了一个命名引用:
    Microsoft.Office.Core
    Project.csproj文件显示了引用的详细信息:
    <COMReference Include="Microsoft.Office.Core">
    <Guid>{2DF8D04C-5BFA-101B-BDE5-00AA0044DE52}</Guid>
    <VersionMajor>2</VersionMajor>
    <VersionMinor>3</VersionMinor>
    <Lcid>0</Lcid>
    <WrapperTool>primary</WrapperTool>
    <Isolated>False</Isolated>
    </COMReference>

    该项目已 checkin 源代码管理,一切正常。

    然后项目就建好了,压到 CD ,并发送给拥有 的客户Office 2007 .

    而且一切都不好。

    在过去(即在 .NET dll hell 之前),我们会使用 来引用 Office 对象。版本独立 ProgID , IE。:
    "Excel.Application"

    解析为 clsid 已安装的 Office,例如
    {00024500-0000-0000-C000-000000000046}    

    然后使用对 COM 的调用(语言网络伪代码)构造一个类:
    public IUnknown CreateOleObject(string className)
    {
    IUnknown unk;

    Clsid classID = ProgIDToClassID(className);
    CoCreateInstance(classID, null,
    CLSCTX_INPROC_SERVER | CLSCTX_LOCAL_SERVER,
    IUnknown, out unk);

    return unk;
    }

    问题

    1) 使安装的 Office 应用程序自动化的已批准技术是什么?

    2)什么是 Office 2003 Primary Interop Assemblies对...有用?

    3) 如果我使用 Office 2003 Primary Interop Assemblies,我是否必须安装 Office 2003?

    4) 如果我使用 Office 2003 主互操作程序集进行构建,我的客户是否会永远绑定(bind)到 Office 20003?

    5) 有没有 Office 2007 Primary Interop Assemblies ?

    6) 如果我安装 Office 2007 主互操作程序集,我是否必须安装 Office 2007?

    7) 使用标准 COM 互操作来驱动 Excel、Word 或 Outlook 有什么问题?例如:
    [ComImport]
    [Guid("00024500-0000-0000-C000-000000000046")]
    public class Excel
    {
    }

    8)当一个人添加一个时,一个人实现了什么
  • 引用 上的项目COM 选项卡 ,
  • 与使用 [ComImport] 相反,
  • 与使用 Office 2007 主要互操作程序集相反?

  • 9) 正在使用 添加引用COM 选项卡 与使用 相同COM 互操作 ,除了它需要一个 类型库在你能看到它之前?

    10) Office 2003 主要互操作程序集是否向后和向前兼容:
    - 办公室 14
    - 办公室 2007
    - 办公室 2003
    - 办公 XP
    - 办公室 2000
    - 办公室 97
    - 办公室 95

    如果客户和开发人员安装了新版本的 Office,它是否仍然有效?

    11) 我们是否必须随应用程序一起提供 Office 2003 主要互操作程序集?

    12) 客户在使用我们的应用程序之前是否必须安装 Office 2003 Primary Interop Assemblies?

    13) 如果客户安装 Office 2003 主互操作程序集,他们是否必须拥有 办公室 安装了吗?

    14) 如果客户安装 Office 2003 主互操作程序集,他们是否必须拥有 Office 2003 安装了吗?

    15) Office 2003 Primary Interop Assembles 是 Office 2003 的免费、精简、可再发行版本吗?

    16) 如果我的开发机器有 Office 2007,我可以使用 Office 2003 PIA 并运送给安装了 Office XP 的客户吗?

    最佳答案

    哇,问题太多了。我认为一般来说,如果您的应用程序使用 PIA,那么您假设您的目标受众安装了某个版本的 Office。当目标用户安装 Office 时,PIA 将安装在 GAC 中。如果他们没有安装 Office 那么你为什么要针对 Office?

    是的,Office dll 是自动化 Office 的正确方法。有一个程序集列表 here ,包括一些用于 Office 2007 的。

    关于visual-studio - 如何从 Visual Studio C# 使用 Office?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/401637/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com