-1

我有一个将jTable实例转换为 excel 文件的应用程序。在我之前的问题中,我在使用时遇到了问题,FileOutputStream()事实证明问题在于 AD 用户访问文件夹/文件的权限。由于我的上级不允许我更改权限,所以我使用了FileWriter(),效果很好。唯一的问题是它不断警告用户他们正在打开的文件已损坏。这是警告:

您尝试打开的文件“filename.xls”的格式与文件扩展名指定的格式不同。在打开文件之前,请确认文件没有损坏并且来自受信任的来源。您现在要打开文件吗?

我搜索了驻留在 Excel 2007 的文件扩展安全性中的解决方案。信息可以在这里找到

我在应用程序涵盖的每个工作站的系统注册表中进行了一些配置。

我只是想问一下Office 14中是否有删除损坏文件警告的方法,因为其中一个工作站,即我上级的工作站,有Office 14。系统注册表中的更改并没有阻止他工作站中的损坏文件警告.

4

1 回答 1

3

我的印象是您沉迷于“巫毒编程”实践;即把你不理解的解决方案应用到你不理解的问题上。

首先,这个:

我在使用 FileOutputStream() 时遇到问题,事实证明问题在于 AD 用户访问文件夹/文件的权限。由于我的上级不允许我更改权限,我改用 FileWriter(),效果很好。

坦率地说,这没有任何意义。如果您无法使用 . 打开文件new FileOutputStream(File),那么您应该无法使用new FileWriter(File). 为什么?因为构造函数的源代码是这样的:

    public FileWriter(File file) throws IOException {
        super(new FileOutputStream(file));
    }

也就是说,FileWriter构造函数做的第一件事就是调用你说不行的FileOutputStream构造函数!!(这同样适用于这些构造函数的其他重载。)

那么您当前的问题实际上是关于 Excel 不允许您打开 XLS 文件,因为它的文件类型与其后缀不匹配。您提出的解决方案是搞乱注册表。但可以肯定的是,正确的方法是找出文件类型与后缀不匹配的 原因。

  • 您是否在文件格式中犯了错误(例如,因为您使用 FileWriter 编写了它)?
  • 您是否为所使用的电子表格格式选择了错误的文件后缀?
  • 您是否使用错误的 MIMEtype 将其下载到用户的机器上?

敲打所有客户端机器上的注册表...仅仅因为您在某个网站上阅读过它...这就是巫毒!

你的老板禁止你乱用 AD 权限,我并不感到惊讶。在这一点上,他可能担心你会造成严重的伤害。


顺便说一句,您的注册表黑客行为使警告消失实际上是关闭了一项旨在帮助加强用户 PC 免受攻击的安全检查。这对我来说并不是解决您问题的合理解决方案。

于 2012-06-05T11:28:32.307 回答