C#错误保存Excel文件

时间:2017-10-06 18:50:04

标签: c# excel

我对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无法保存,   因为它是只读的。

我不知道为什么我没有收到默认位置的错误,如果我使用我的按钮给我相同的位置我会收到错误。

有谁知道我做错了什么?

提前致谢

1 个答案:

答案 0 :(得分:0)

所以问题是只有当你尝试通过but_Browse_Click后写入文件时才读取文件?你关闭了StreamReader吗?尝试使用

reader.close();

在but_Browse_Click中。

也许更好的方法是:

using (StreamReader reader = new StreamReader(fileToOpen)) { //all code involving the reader in here }

完成后自动关闭。