晚上好,
我有以下问题需要解决:
我想将一堆用户生成的.txt
文件的内容添加到Excel文件中。这些文件全天生成,并通过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
:info.Open(FileMode.Open, FileAccess.ReadWrite, FileShare.None)
对于Excel文件的打开、编辑和保存/关闭,我使用Microsoft.Office.Interop.Excel.Application
、[..].Workbook
和[..].Worksheet
。
当用户在添加过程中打开(通过普通Office应用程序)Excel文件时,主要问题就会出现。我希望能找到上述文件的某种锁定,这样用户就不会中断编辑过程。
关于如何将打开/编辑Excel文件的两种类型结合起来,有什么想法吗?
非常感谢你。
TL;DR:当程序正在编辑Excel文件时,我如何通过编程防止用户打开Excel文件?或者至少打开它的另一个实例,这样过程就不会中断
附言:如果需要任何进一步的代码,我很乐意发布:)
我认为您需要一个更好的解决方案。听起来你正在最大限度地发挥Excel的功能。如果可能的话,你最好使用数据库。