限制对Excel源数据的访问

我有一个Excel模板,它使用vlookups和Index / Match函数从源Excel文件中读取数据。 我有一种方法来防止最终用户访问源数据文件/表单吗? 例如通过将源文件存储在远程位置,并从那里读取vlookups。

根据您可用的资源情况,可能很难防止用户只是绕过您所设置的限制。 即使数据在数据库表中,您也需要采取措施来防止用户在Excel模板之外查询。 我不知道你的情况,但理想情况是会有人(如数据库pipe理员,infosec,后端开发人员)可以帮助devise出适当的解决scheme。

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

另外,我会担心用户找出其他的用户ID和任意访问数据。 您可以通过映射表来实现某种保护,以便无法使用用户标识访问信息。 表格如下:

  • 列:randomKey,userId,creationDate
  • randomKey只是一个x位的随机数字/字母序列
  • creationDateTime是一个时间戳,用于超时目的

每当有人需要一个用户ID,你就会运行一个存储过程,将一条logging添加到映射表中。 您input用户标识,过程创build一个logging并返回密钥。 您向用户提供他们在模板中input的密钥。 一个单独的存储过程获取密钥并parsing为用户标识(使用映射表)并返回请求的信息。 这些密钥到期。 它们可以是一次性的(程序从映射表中删除logging),也可以使用超时(如果creationDateTime大于x小时/天,则不会返回数据)。

对于密钥,Mark Ransom分享了一个有趣的解决scheme来创build随机ID,您可以根据自己的逻辑: Generate 6 Digit unique number

听起来像很多工作,但是如果对数据有敏感的话,值得围绕它build立一个更强大的过程。 可能有更好的办法来解决这个问题,但是我希望这至less可以让你思考。

不,这是不可能的。

而且,你绝对需要打开这些文件来刷新引用它们的公式中的值。 当你用外部引用打开一个文件时,它们的值将从本地caching中计算出来(这可能不等于实际的远程文件内容)。 当您打开远程文件时,值将刷新。