2010-09-09 37 views
0

我有一个程序,我用它来写入数据到一个excel文件....同时我使用一个excel文件从第一个excel文件导入数据使用(导入数据)工具。该进程无法访问该文件

这是程序代码的一部分:

private void Log(string pText) 
{ 
    //textBox1.AppendText(pText + "\r\n"); // does not put cr lf, why? 
    this.BeginInvoke(new MethodInvoker(delegate() { 
     textBox1.AppendText(pText); 
     textBox1.AppendText("\n"); 
    })); 
} 

private void LogStatus(string pText) 
{ 
    textBox1.AppendText(pText + "\t"); 
    textBox1.AppendText("\n"); 
} 


StreamWriter theString = new StreamWriter(FileName + ".csv", true); 
theString.WriteLine(DateTime.Now + dataToSave + "\t\n"); 
theString.Close(); 

我的问题是,当我开始debuge我的程序在Visual C#2008

它会工作的意愿,并开始将数据写入到第一个Excel文件....然后在调试过程中

我想从第一个Excel文件导入数据到第二个使用导入数据(这对我来说很重要,我不能延迟导入过程)

的调试运行过程停止,视觉C#2008 higlight这行代码


theString.Close(); 

和弹出消息给我说

该进程无法访问,因为另一个文件进程已锁定文件的一部分。

在解决这个问题的任何帮助PLZ

,并感谢

+1

看起来问题在于创建* first *文件。你是否正确关闭文件呢? – 2010-09-09 08:34:06

+1

Excel是否仍然打开文件?如果是这样,那就是问题所在。 – leppie 2010-09-09 08:34:23

+0

我不打开第一个Excel文件..我使用另一个导入数据形式的第一个(进口是我必须)我不能延迟导入COS。我有很多实时写入的数据,我想用导入函数(也是实时)来查看数据 – user443192 2010-09-09 08:35:47

回答

0

请向我们提供这也开启了第一个文件中的代码,所以我们可以看到这里的大图片。

很显然,这个文件被锁定的地方,即使您使用StreamReader自己读取和写入文件,也可能出现这种情况。

因此,您的问题不在于此代码,而是恰巧锁定文件的代码。

当然,该文件也可能被另一个应用程序锁定,但如果这是一个只被程序使用的文件,那么它不应该是一个问题。

您是否使用任何Excel interop来首先读取文件?难道你没有正确地从那里关闭文件,并且Excel仍然打开这个文件?在这种情况下,即使Excel看起来没有运行,您也可以检查是否在计算机上运行了Excel.exe进程。

+0

嗨,我只需添加程序用于写入Excel文件的代码的其他部分 – user443192 2010-09-09 09:05:21

+0

我看到你使用了BeginInvoke,它使得你提供的委托异步运行。既然你只是在这里给你的代码的一部分,我只能猜测,但我认为读取文件的异步代码可能没有完成运行,因此锁定了这个文件。 – 2010-09-09 09:31:16

0

也许你有一个开放的流或某事。关闭它们并重试。

相关问题