2017-06-20 127 views
2

我想在excel表格中写几行然后使用简单的c#程序保存。但每次显示对话框时都会显示“您想保存该文件吗?”是,不,取消选项。我想选择“是”,以便可以使用更新的数据保存文件。如何处理excel工作表中的另存为对话框在C#中

下面是代码:

string ID = "123456"; 

Microsoft.Office.Interop.Excel.Application xlApp; 
Microsoft.Office.Interop.Excel.Workbook xlWorkBook; 
Microsoft.Office.Interop.Excel.Worksheet xlWorkSheet; 
xlApp = new Microsoft.Office.Interop.Excel.Application(); 
      xlWorkBook = xlApp.Workbooks.Open(@"D:\Projects\Data\DataSheet.xlsx", 0, true, 5, "", "", true, Microsoft.Office.Interop.Excel.XlPlatform.xlWindows, "\t", false, false, 0, true, 1, 0); 
      xlWorkSheet = 
(Microsoft.Office.Interop.Excel.Worksheet) xlWorkBook.Worksheets["source"]; 
//putting the value in excel. 
xlWorkSheet.Cells[2, 2] = ID; 

xlApp.Visible = true; 
//xlApp.ActiveWorkbook.save(); 

xlWorkBook.SaveAs(@"D:\Projects\Data\DataSheet.xlsx", Microsoft.Office.Interop.Excel.XlFileFormat.xlWorkbookDefault, Type.Missing, Type.Missing, 
     false, false, Microsoft.Office.Interop.Excel.XlSaveAsAccessMode.xlNoChange, 
     Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing); 

xlWorkBook.Close(false, Type.Missing, Type.Missing); 
xlApp.Workbooks.Close(); 
System.Runtime.InteropServices.Marshal.ReleaseComObject(xlWorkBook); 

xlApp.Quit(); 
GC.Collect(); 
System.Runtime.InteropServices.Marshal.ReleaseComObject(xlApp); 

它在Excel工作表中输入数值,但它不保存它。有人可以帮助缩短这个问题吗?或者建议更好的方法?

+0

的可能的复制[另存为命令不起作用,但SaveCopyAs确实](https://stackoverflow.com/questions/17450447/saveas-command-does- not-work-but-savecopyas-does) – dovid

+1

注意,除非绝对必要,否则绝不会调用'GC.Collect()',这样可以更好地阻止imo。因为它应该在需要资源时收集 – EpicKip

+0

我已经添加了一个基于_“它节省但仍然要求我保存”的答案,然后意识到这不是您的问题。 xlWorkBook.SaveAs(@“D:Projects \ Data \ DataSheet.xlsx”)是否可以工作,而不需要额外的参数?在你的代码中需要点消息弹出? – gms0ulman

回答

1

尝试Saved属性手动设置为true

xlWorkBook.SaveAs(...); 
xlWorkBook.Saved = true; 
xlApp.Workbooks.Close() //not sure if required before: xlWorkBook.Close() 

编辑

你可以提供参数the Close() method。在C#中,我相信这应该是这样的:

xlWorkBook.SaveAs(...); 
xlWorkBook.Saved = true; 
xlWorkBook.Close(false); //new line 
xlApp.Workbooks.Close(); OR xlApp.Workbooks.Close(false); 
+0

当我使用这个消息仍然出现“一个名为DataSheet.xlsx的文件已经存在的位置,你想替换它吗?与是,否和取消按钮。 有没有一种方法可以建议选择“是”,或者只需保存并关闭工作簿而不显示这些消息。在此先感谢 – Ansh

+0

@Ansh AFC - [您可以将DisplayAlerts设置为false](https://msdn.microsoft.com/VBA/Excel-VBA/articles/application-displayalerts-property-excel) – gms0ulman

+0

有没有办法我可以使用保存而不是SaveAs? – Ansh

相关问题