打包一个excel插件

Posted

技术标签:

【中文标题】打包一个excel插件【英文标题】:Packaging an excel addin 【发布时间】:2010-01-07 06:55:19 【问题描述】:

我有一个使用 C# 开发的 excel 自动化插件。我如何打包和分发它?此外,当第一次安装插件时,我希望第一次弹出用户名和密码检查。

我该怎么做呢?

谢谢

【问题讨论】:

这对我来说听起来很棘手。您正在使用 Microsoft Office 互操作程序集,是吗?哪个版本? 2003 年,2007 年? 是的,这很棘手。有关如何执行此操作的详细答案,请参阅 ***.com/questions/2117365/deploying-an-excel-udf 和 ***.com/questions/1506858/…。 另一个好资源是social.msdn.microsoft.com/Forums/is/innovateonoffice/thread/… 【参考方案1】:

Visual Studio 为每个加载项项目创建一个安装项目。你可以从使用它开始。它会生成一个您可以分发的 MSI 文件。

关于第二部分 - 如果您继续使用 Studio 生成的设置,您可能无法在安装中添加自定义对话框。您将需要一些构建安装的工具。

第一次使用时询问用户名和密码怎么样?这样安装仍然很简单。根据我的经验,安装过程中的每个问题都会增加用户说“WTF,我为什么要回答这些愚蠢的问题。取消”的风险。

要在第一次使用时询问用户名和密码,您必须在询问后将它们保存在某个地方,以便下次您知道它们。批准的 Microsoft 方式是将它们保存在“设置”中。默认情况下,Studio 会为此在您的项目中创建设置文件。只需向该文件添加两个具有空默认值的变量。将它们标记为用户变量(而不是应用程序变量)。

从您的加载项中,以 Properties.Setings.VariableName 的形式访问它们。

当您的加载项启动时,请检查您的设置中是否有用户名和密码。如果它们是空的,请询问并保存。

if (string.IsNullOrEmpty(Properties.Settings.Default.UserName))

   string name;
   string password;
   //ask for name and password, replace with your code
   AskForUserandPassword(out name, out password);
   Properties.Settings.Default.UserName=name;
   Properties.Settings.Default.Password=password;
   Properties.Settings.Default.Save()

物理上,它保存在 XML 文件中用户目录深处的某个位置。

【讨论】:

谢谢。用户名密码仅限首次使用。如何实现? 嗨,我的是一个用于自动化插件的 C# 类库项目,并且没有我可以分发的 VS 创建的默认 msi 文件。我正在为自动化插件创建一个设置文件。当我运行设置时,我希望插件出现在 Excel 自动化插件列表中(工具-->插件-->Excel 中的自动化插件),以便我可以直接将其包含在我的 Excel 应用程序中。我该怎么做?我在dreamincode.net/forums/showtopic58021.htm 此处的链接之后创建了一个安装项目,并且该插件未出现在自动化插件列表中。我在这里错过了什么吗? 您可能缺少安全性。至少在 Vista 上,加载项需要 FullTrust 才能运行。您需要添加自定义操作来实现此目的。这里描述了官方的微软方式。相当复杂。 msdn.microsoft.com/en-us/library/bb332051.aspx。您不一定要按照他们建议的方式修改引导程序,但一定要看看他们设置安全性的方式。 我的安全级别仅设置为完全信任。我仍然没有在自动化插件列表中看到我的插件。 ! 我的同情,我正在努力解决同样的问题。它真的可以是任何东西,也许是缺少的 DLL。这是另一个链接:blogs.msdn.com/vsod/archive/2008/04/22/…

以上是关于打包一个excel插件的主要内容,如果未能解决你的问题,请参考以下文章

Unity3D读取之——读取Excel文件内容

Unity3D读取之——读取Excel文件内容

小o地图excel插件版怎么下载

使用 excelJs 插件导出 excel(原生js)?

Excel 插件 COM 插件 VS VSTO 插件

Excel 2010 与 Excel 2003 中的整数表示(C++ 插件)