我对C#很陌生,而且我正在尝试很多,我正在尝试让我的程序更加用户友好,这就是问题的开始。 起初,excelfile的位置是一个公共静态字符串,我没有问题。我把它改成了这个:
public string Excellocation()
{
string xlLocation;
if (but_Browse.Text == "Zoek Excel")
{
xlLocation = @"E:\Levi\Documents\Verjaardagen.xlsx";
}
else //Only if I get into this part of my code I get the error
{
xlLocation = but_Browse.Text;
}
return xlLocation;
}
我使用的按钮让用户可以给我一个excel文件的位置:
private void but_Browse_Click(object sender, EventArgs e)
{
var FD = new System.Windows.Forms.OpenFileDialog();
if (FD.ShowDialog() == System.Windows.Forms.DialogResult.OK)
{
string fileToOpen = FD.FileName;
System.IO.FileInfo File = new System.IO.FileInfo(FD.FileName);
//OR
System.IO.StreamReader reader = new System.IO.StreamReader(fileToOpen);
//etc
but_Browse.Text = fileToOpen;
this.but_Browse.AutoSize = true;
But_Import.Visible = true;
}
}
读取Excel文件没问题,我的程序找到并处理它,当且仅当用户使用“浏览按钮”更改了位置时,我从Windows收到一条消息,表示已经存在一个excel文件该名称,如果我想替换它,如果我点击该消息,我的代码在试图保存excel文件的行上给出错误
xlWorkbook.Save();
xlWorkbook.Close(true);
xlApp.Quit();
System.Runtime.InteropServices.Marshal.ReleaseComObject(xlApp);
xlWorkbook.Save()给了我这个错误:
发生了System.Runtime.InteropServices.COMException HResult = 0x800A03EC消息= Verjaardagen.xlsx无法保存, 因为它是只读的。
我不知道为什么我没有收到默认位置的错误,如果我使用我的按钮给我相同的位置我会收到错误。
有谁知道我做错了什么?
提前致谢
答案 0 :(得分:0)
所以问题是只有当你尝试通过but_Browse_Click后写入文件时才读取文件?你关闭了StreamReader吗?尝试使用
reader.close();
在but_Browse_Click中。
也许更好的方法是:
using (StreamReader reader = new StreamReader(fileToOpen))
{
//all code involving the reader in here
}
完成后自动关闭。