基于程序和基于应用程序的Excel文件编辑

时间:2013-08-26 15:16:36

标签: vb.net excel stream locking

晚上好,

我有以下问题需要解决:

我想在Excel文件中添加一堆用户生成的.txt文件的内容。这些文件全天生成,并通过FTP发送到文件夹,程序会不断监视该文件夹以查看是否有新增内容。 如果程序在其中找到新的.txt文件,则会打开要编辑的Excel文件,添加信息,然后关闭Excel,保存更改。

同时,用户必须打开这些Excel文件以检查新的更新信息并相应地处理它。

程序的执行有点像这样:

  1. 无限循环检查文件夹是否为空或包含新的.txt文件。
  2. 如果文件夹不为空(因此有信息要添加),它会检查Excel文件是否打开。
  3. 如果Excel文件已关闭:
    1. 以编程方式打开它并将信息添加到其中。
    2. 保存Excel文件并退出。
    3. .txt备份到另一个文件夹,以防出现某种错误。
  4. 如果Excel文件已打开:
    1. 继续检查,直至关闭。
  5. 要检查文件夹是否为空,我使用:System.IO.Directory.EnumerateFileSystemEntries(path).Any()

    要检查Excel文件是否已打开,我使用: System.IO.FileInfo(path)FileStream,在Try-Catch子句中,以下列模式打开FileInfoinfo.Open(FileMode.Open, FileAccess.ReadWrite, FileShare.None)

    对于打开,编辑和保存/关闭Excel文件,我使用Microsoft.Office.Interop.Excel.Application[..].Workbook[..].Worksheet

    当用户在添加过程中打开(通过正常的Office应用程序)Excel文件时,会出现主要问题。我希望找到所述文件的某种锁定,这样用户就无法中断编辑过程。

    关于如何组合两种类型的打开/编辑Excel文件的想法?

    非常感谢你的进步。

    TL; DR:如何在程序编辑Excel时以编程方式阻止用户打开Excel文件?或者至少打开它的另一个实例,这样过程不会中断?

    PS:如果需要任何进一步的代码,我很乐意发布它:)

1 个答案:

答案 0 :(得分:0)

我认为你需要一个更好的解决方案。听起来你正在最大限度地发挥Excel的功能。如果可能的话,最好使用数据库。