0

晚上好,

我有以下问题要解决:

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

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

程序的执行有点像这样:

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

要检查文件夹是否为空,我使用: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:如果需要任何进一步的代码,我很乐意发布它:)

4

1 回答 1

0

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

于 2013-08-30T11:54:51.447 回答