晚上好,
我有以下问题要解决:
我想将一堆用户生成的文件的内容添加到 Excel 文件中.txt
。这些文件全天生成并通过 FTP 发送到一个文件夹,程序会不断监控该文件夹以查看是否有新添加。如果程序在其中找到新.txt
文件,它会打开要编辑的 Excel 文件,添加信息,然后关闭 Excel,保存更改。
同时,用户必须打开这些 Excel 文件来检查新更新的信息并进行相应的处理。
程序的执行有点像这样:
- 无限循环检查文件夹是否为空或包含新
.txt
文件。 - 如果文件夹不为空(因此有要添加的信息),它会检查 Excel 文件是否打开。
- 如果 Excel 文件已关闭:
- 以编程方式打开它并向其中添加信息。
- 保存 Excel 文件并退出。
- 备份
.txt
到另一个文件夹以防出现某种错误。
- 如果 Excel 文件已打开:
- 继续检查直到关闭。
要检查文件夹是否为空,我使用:System.IO.Directory.EnumerateFileSystemEntries(path).Any()
要检查 Excel 文件是否已打开,我使用:
System.IO.FileInfo(path)
以及FileStream
在 Try-Catch 子句FileInfo
中以以下模式打开的 which:info.Open(FileMode.Open, FileAccess.ReadWrite, FileShare.None)
对于我使用的 Excel 文件的打开、编辑和保存/关闭Microsoft.Office.Interop.Excel.Application
,[..].Workbook
和[..].Worksheet
.
当用户在添加过程的中间打开(通过普通的 Office 应用程序)Excel 文件时,主要问题就出现了。我希望找到某种对所述文件的锁定,这样用户就不能中断编辑过程。
关于如何结合两种类型的打开/编辑 Excel 文件的任何想法?
非常感谢您。
TL;DR:如何以编程方式防止用户在程序编辑 Excel 时打开 Excel 文件?或者至少,打开它的另一个实例,这样进程就不会中断?
PS:如果需要任何进一步的代码,我很乐意发布它:)