【发布时间】:2017-10-06 18:50:03
【问题描述】:
我对 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 Message=Verjaardagen.xlsx 无法保存, 因为它是只读的。
我不知道为什么我在使用我的按钮给我相同的位置时却得到一个错误,而我却得到一个错误的默认位置。
有谁知道我做错了什么?
提前致谢
【问题讨论】:
-
如果您将代码修改为:
xlLocation = but_Browse.Text; MessageBox.Show(xlLocation);这会给您任何线索吗? -
消息框给了我这个:E:\Levi\Documents\Verjaardagen.xlsx 这应该是正确的?
-
是不是和你的
StreamReader有关,你保存的时候文件是不是已经打开了? -
即您在尝试保存文件之前是否致电
reader.Close()? -
单击按钮后,它会打开 Excel,执行一些操作,然后尝试保存并关闭它。在我单击该按钮之前,Excel 已关闭(在任务管理器中看不到 excel,我尝试重新启动我的电脑以确保 excel 没有在任何地方打开)