【问题标题】:Write to file that is open in Excel写入在 Excel 中打开的文件
【发布时间】:2009-06-03 20:52:13
【问题描述】:

假设我正在运行一个程序,它会定期将信息添加到 .CSV 文件中。有没有办法在 Excel 中打开文件时写入文件?显然,在 Excel 中重新打开文件之前不会注意到这些更改,但就目前而言,我正在捕获 IOException 并且如果当前文件已经打开,则只是启动一个新的 .csv 文件。

【问题讨论】:

  • 这并没有解决编程问题,但是您是否对环境有足够的控制权以在 NTFS 中将文件标记为只读,以便其他人打开它时文件不会被锁定?当然,这只有在 C# 可以在写入模式下打开只读文件时才有效。

标签: c# file-io


【解决方案1】:

Excel似乎以独占模式打开文件,所以我能想到的唯一方法是将您的更改写入临时文件,然后使用FileSystemWatcher查看文件何时关闭,并覆盖文件.

这不是一个好主意,因为您可能会丢失数据。 excel 锁定文件的全部原因是为了避免意外覆盖在 excel 中所做的更改。

【讨论】:

  • 没错。我不建议绕过 excel 的保护做法,但约翰和我提供了一种方法 - 如果你必须这样做。
【解决方案2】:

听起来文件被锁定了。如果它在另一个进程中打开,我怀疑你是否能够写入该文件。

【讨论】:

    【解决方案3】:

    作为一名前(和现在的)VB 程序员,我可以告诉你 Jared 是正确的 - 没有办法直接做到这一点。您可以先尝试复制文件,进行编辑,然后尝试将文件保存回其原始位置,直到锁定的文件变为可用。即使在锁定状态下,您也应该能够复制该文件。

    【讨论】:

      【解决方案4】:

      如何使用 Excel 的对象模型并自动将数据添加到打开的电子表格中?您可能需要以某种方式提示用户让他们知道发生了什么。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-01-08
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多