每次我保存文件时,程序都会创建一个重复文件

Program is creating a duplicate file each time I save a file

我有一个程序要求文件名和保存位置 saveFileDialog1。它会生成一个 0 字节的额外文件,其名称与 name 完全相同。文件类型是 File,当我打开它时,它告诉我它不存在。我可以在我的 Recent files 中看到这个文件,但在我保存文件的地方找不到它。这是我的代码:

private void MaakExcelFile()
    {
        SaveFileDialog saveFileDialog1 = new SaveFileDialog();
        if (saveFileDialog1.ShowDialog() == DialogResult.OK)
        {
            //string zonderspecialchars = RemoveSpecialCharacters(saveFileDialog1.FileName);
            copyAlltoClipboard();
            Microsoft.Office.Interop.Excel.Application xlexcel;
            Microsoft.Office.Interop.Excel.Workbook xlWorkBook;
            Microsoft.Office.Interop.Excel.Worksheet xlWorkSheet;
            object misValue = System.Reflection.Missing.Value;
            xlexcel = new Microsoft.Office.Interop.Excel.Application();
            xlexcel.Visible = true;
            xlWorkBook = xlexcel.Workbooks.Add();
            xlWorkSheet = (Microsoft.Office.Interop.Excel.Worksheet)xlWorkBook.Worksheets.get_Item(1);
            Microsoft.Office.Interop.Excel.Range CR = (Microsoft.Office.Interop.Excel.Range)xlWorkSheet.Cells[1, 1];
            CR.Select();
            xlWorkSheet.PasteSpecial(CR, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, true);
            // string zonderspecialchars = RemoveSpecialCharacters(filenaam);
            try
            {
                xlWorkBook.SaveAs(@"" + saveFileDialog1.FileName, Type.Missing,
                    Type.Missing, Type.Missing, Type.Missing, Type.Missing, XlSaveAsAccessMode.xlNoChange,
                    Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing);
            }
            catch (Exception e)
            { throw e; }
        }
    }

有人知道为什么会这样吗? 这是我最近的文件的样子:http://imgur.com/a/1fjLY

一定是在MakeExcelFile()中发生的;因为 xlWorkBook.SaveAs 只会保存工作簿,不会创建任何其他文件。

编辑:尝试添加 workbook.close()。 xlapp.Close() 保存后。您可能只是让该工作簿保持打开状态...

Edit2:删除您的 SaveFileDialog 并硬编码保存 excel 文件的路径。看看这样是不是只能保存一个文件。

Edit3:嗯..应该以这种方式做同样的事情,但是 运行 两次。要么将 saveasdialog 嵌入到您的 try{} 块中,然后仅将其保存为 saveas,要么切换到 folderbrowserdialog 并在代码中命名该文件。