每次我保存文件时,程序都会创建一个重复文件
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 并在代码中命名该文件。
我有一个程序要求文件名和保存位置 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 并在代码中命名该文件。