我编写了一个使用Apache读取excel文件的程序,该程序正在按预期工作。下一部分是实现-“拒绝读取excel文件,如果它包含DDE链接/信息。
我通过下面的链接了解到关于DDE的信息
报酬率
发布于 2017-11-07 10:35:30
对于XSSF,可以使用XSSFWorkbook.getExternalLinksTable从XSSFWorkbook中获取ExternalLinksTables的信息。
然后遍历该List,使用ExternalLinksTable.getCTExternalLink为每个ExternalLinksTable获取CTExternalLink,然后检查CTExternalLink.isSetDdeLink是否为true。如果是这样的话,我们在那里有一个DDE链接。
外部链接(如='C:\Users\Paul\Documents\[2014 Budget.xlsx]Details'!$R$7或='http://teamsite.company.com/corporate/[MySpreadsheet.xlsx]Sheet1'!F4 )与DDE无关。在使用这些链接时没有危险,因此没有理由“拒绝读取excel文件,如果它包含”这样的链接。在Excel中,DDE链接看起来像=ddeapp|'parameters'!reference。因此,我们需要与其他链接不同的DDE链接,只有“拒绝读取excel文件,如果它包含”真正的 DDE链接。使用CTExternalLink.isSetDdeLink,我们能够做到这一点。
我怀疑“如果包含DDE链接拒绝读取Excel文件”的要求是为了避免像excel中的=ddeapp|'parameters'!reference这样的单元格公式。使用这样的公式,如果用户不用心并且是管理员,就可能做非常糟糕和危险的事情。例子:=cmd|'/C control'!anyname.这将在Windows中打开系统控制应用程序,如果用户是管理员,那么它将允许更多的.
由于DDE是IT新石器时代的古老技术,因此目前还没有以有效的方式使用DDE的好例子。您需要一个ddeapp,它是一个允许通过DDE联系并返回值的应用程序。这个youtube视频: DTN IQFeed的DDE链接设置展示了一个例子。
https://stackoverflow.com/questions/47153078
复制相似问题