【问题标题】:C# Add-in vs VBA Macro for Excel functionality用于 Excel 功能的 C# 加载项与 VBA 宏
【发布时间】:2013-05-09 19:42:22
【问题描述】:

我们想让我们系统的用户有机会将一些数据从数据库拖到 Excel 中。 (只读取数据,没有机会将任何数据写回数据库)。用户没有直接访问数据库的权限,因此我们需要对他们进行一些身份验证。 (一是连接数据库,二是使用我们系统的安全设置,让用户1只能看到某些表。)

我被指示开始为此编写 C# 插件,但同事被指示编写 VBA 宏。

我正在考虑使用实体框架来访问数据,但我以前没有使用过它。我不知道他们将在宏中使用什么,但宏管理器认为我将通过大量数据传输来破坏网络。他也不喜欢用户必须在他们的计算机上安装插件的想法。但是,我对宏和它们不是很安全的概念有一种模糊的不安。宏的安全性如何?它们是否可以安全调整,还是有知识的用户可以更改代码?

我想知道,每种方法的优缺点是什么,以及比我有更多经验和知识的人的总体感觉是什么?

特别注意以下事项:

  • 信息安全(某些表不应访问。)
  • 网络流量
  • 易于维护和未来修改
  • 我遗漏的任何其他相关问题

亲切的问候,

【问题讨论】:

  • 安全性在于服务器端而不是 vba。您可以在服务器端访问用户,并且用户仅使用他们的凭据通过 vba 登录到数据库。没有闯入的风险...编写一个宏以登录到数据库并检索记录集,如果您的“代码”仍有问题,请返回并在此处发布 - 您的问题可能已关闭。

标签: c# excel vba add-in


【解决方案1】:

在这种情况下我会做的是: - 在数据库上创建视图并将它们分配给模式。不要限制数据,只要指定你想让他们看到的列,让他们在Excel中过滤数据(假设返回的数据量很大) - 创建一个 Active Directory 组并为其成员授予对该架构的读取权限 - 使用 Excel -> 数据 -> 连接(在 Excel 2010 中,不确定 2008 年)将工作表连接到该视图

他们可以弄乱excel中的数据,但不能将其写回数据库。您可以限制他们可以看到的表/列,并在视图中对查找表进行连接,这样他们就看不到数据库 ID。

【讨论】:

  • 是的,这是个好主意。然而,这不是我们想要的。我们的情况要复杂得多。有时某个用户应该能够查看某个表,但不能查看表中的所有记录。这是通过一个存储过程来完成的,该过程检查用户可以看到哪些记录,但这不是静态的,它不像一次性检查那么简单。所以我不能为每个可能出现的想象场景创建一个视图。用户不是技术人员,如果他们是技术人员,他们可以自己将数据拖到 Excel 中(如果他们有 DB 用户名和密码)。
猜你喜欢
  • 2013-07-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-05-02
  • 1970-01-01
  • 2018-09-18
  • 1970-01-01
相关资源
最近更新 更多