我想打开一个excel文件并等待用户编辑并保存它,然后我使用数据。
我正在使用这段代码:
string tempFileName = "test.xlsx";
MemoryStream ms = DocumentFormat.OpenXml.Extensions.SpreadsheetReader.Create();
DocumentFormat.OpenXml.Extensions.SpreadsheetWriter.StreamToFile(tempFileName, ms);
var psi = new ProcessStartInfo(tempFileName);
var p = new Process();
p.StartInfo = psi;
p.Start();
p.WaitForExit();
p.Close();
// use the data
一切看起来都很好。
但问题是,如果在运行此 block 之前有一个打开的 excel 文件,我将在 p.WaitForExit();行是“无效的操作异常”。
我认为原因是:如果已经有一个名为“excel.exe”的进程,我的代码不会创建另一个进程来等待它退出,并且会合并进程或类似的东西。
我可以强制用户关闭所有打开的 excel 文档,然后运行此代码,或者我自己杀死 excel.exe 进程并从我的代码重新启动它。我不想使用这些解决方案。
请帮我找到出路!
非常感谢
最佳答案
当 Excel 打开电子表格时,Excel 会在与电子表格相同的文件夹中维护一个文件,并且只要用户打开 Excel 电子表格,该文件就存在。文件名(Excel 2007)与您的电子表格文件名相同,但前缀为“~$”,只需轮询该文件是否存在或使用电子表格文件夹上的 FileSystemWatcher 来查找它是否消失 - 这表明用户已停止使用电子表格并关闭它。
关于c# - 我想打开一个excel文件并等待用户编辑并保存它,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23865738/