限制对Excel源数据的访问

限制对Excel源数据的访问,excel,superuser,Excel,Superuser,我有一个Excel模板,它使用vlookups和索引/匹配函数从源Excel文件读取数据。有没有办法阻止最终用户访问源数据文件/工作表?e、 g.将源文件存储在远程位置,并从那里读取vlookups。。 不,这是不可能的 此外,您绝对需要打开这些文件来刷新引用它们的公式中的值。打开具有外部引用的文件时,将从本地缓存(可能不等于实际远程文件内容)计算其值。打开远程文件时,这些值将刷新。根据您可用的资源,可能很难阻止用户绕过您设置的限制。即使数据位于数据库表中,您也需要采取适当的措施,防止用户在Ex

我有一个Excel模板,它使用vlookups和索引/匹配函数从源Excel文件读取数据。有没有办法阻止最终用户访问源数据文件/工作表?e、 g.将源文件存储在远程位置,并从那里读取vlookups。。 不,这是不可能的


此外,您绝对需要打开这些文件来刷新引用它们的公式中的值。打开具有外部引用的文件时,将从本地缓存(可能不等于实际远程文件内容)计算其值。打开远程文件时,这些值将刷新。

根据您可用的资源,可能很难阻止用户绕过您设置的限制。即使数据位于数据库表中,您也需要采取适当的措施,防止用户在Excel模板之外查询数据。我不知道您的情况,但理想情况下会有人(即数据库管理员、信息安全、后端开发人员)帮助设计合适的解决方案

话虽如此,我相信您关于使用MS SQL Server的想法可能是一个很好的方法。您可以创建存储过程,而不是使用sql查询来限制访问。有关更多详细信息,请参阅此链接:

此外,我还担心用户发现其他用户ID并任意访问数据。您可以通过使用映射表来实现某种保护,这样就无法使用用户ID访问信息。该表如下:

  • 列:随机键、用户ID、creationDate
  • randomKey只是一个x位随机数/字母序列
  • creationDateTime是一个时间戳,用于超时
每当有人需要用户id时,您都会运行一个存储过程,将记录添加到映射表中。输入用户id后,过程将创建一条记录并返回密钥。为用户提供他们在模板中输入的密钥。一个单独的存储过程获取密钥并解析为用户id(使用映射表)并返回请求的信息。这些密钥过期了。它们可以是一次性使用(过程从映射表中删除记录)或使用超时(如果creationDateTime超过x小时/天,则不会返回数据)

对于密钥,Mark Ransom分享了一个有趣的解决方案,用于创建随机ID,您可以为其建立逻辑基础:


听起来需要做很多工作,但是如果你的数据具有敏感性,那么围绕它构建一个更健壮的流程是值得的。也许有更好的方法来解决这个问题,但我希望它至少能让你深思

这比这里更适合超级用户。理解为什么需要限制访问会很有趣。这是因为数据的敏感性吗?你害怕源被破坏吗?如果您能提供详细信息,可能会有更多的人为您指明正确的方向。@DaveThornton:是的,这纯粹是出于保密原因,而不是担心数据的损坏。用户将在需要时获得几个用户id,然后他/她将一次在模板中输入一个用户id,然后自动填充模板中的其他字段。包含所有相应数据的用户ID的完整列表将存储在源数据文件中。感谢您的评论。如果我改变方法如何:如果我在MS SQL Server中保存源数据并只查询模板所需的值,这可能吗?非常有趣的想法。。感谢Dave提供的详细信息,非常感谢。事实上,听起来这需要做很多工作,需要考虑采取哪种方法。干杯