保存一个excel工作簿C#

我忙于使用C#应用程序操纵Excel数据的应用程序。

xlApp = new Excel.Application(); xlWorkbook = xlApp.Workbooks.Open(ConString, 0, true, 5, "", "", true, Microsoft.Office.Interop.Excel.XlPlatform.xlWindows, "\t", false, false, 0, true, 1, 0); xlWorksheet = (Excel.Worksheet)xlWorkbook.Worksheets.get_Item(1); 

直到这一点,我已经保存了工作簿,只需简单地说“xlApp.Quit”,就会出现从任何Microsoft Office产品中获得的标准“您想保存更改”对话框。

然而,我正在保存的工作簿数据有问题,所以我被告知使用Workbook.Save方法。 现在它保存了正确的数据,但我无法指定文件名/位置。

我读了关于.SaveCopyAs方法,我正在使用保存文件对话框来提供文件名/位置,但是当我保存并closures应用程序没有find文件。

这是Savefile方法。

  private void SaveFile() { using (SaveFileDialog Save = new SaveFileDialog()) { Save.Filter = "Excel Files (*.xlsx)|*.xlsx"; Save.InitialDirectory = "C:"; Save.Title = "Save"; if (Save.ShowDialog() == DialogResult.OK) { // Using .SaveCopyAs doesnt save at all xlWorkbook.SaveCopyAs(saveFileDialog1.FileName); xlWorkbook.Saved = true; //Using .Save saves the file, but i cannot specify the location/File name //xlWorkbook.Save(); xlApp.Quit(); ReleaseObject(xlWorksheet); ReleaseObject(xlWorkbook); ReleaseObject(xlApp); } } } 

不知道这是否相关,但是这是我的ReleaseObject方法。

 private void ReleaseObject(object obj) { try { System.Runtime.InteropServices.Marshal.ReleaseComObject(obj); obj = null; } catch(Exception ex) { obj = null; MessageBox.Show("Unable to release the object " + ex.ToString()); } finally { GC.Collect(); } } 

我见过很多人说他们的SaveCopyAs方法没有保存,这是由于他们没有给文件的名称/扩展名。 这是我检查的第一件事。 这互通的东西是我的新东西,所以请原谅任何错误。

文件名变量

谢谢

尝试xlWorkbook.SaveAs("TheSavePath") instead of xlWorkbook.SaveCopyAs`。

并覆盖使用:

 xlWorkbook.SaveAs("TheSavePath", Microsoft.Office.Interop.Excel.XlFileFormat.xlWorkbookDefault, Type.Missing, Type.Missing, true, false, XlSaveAsAccessMode.xlNoChange, XlSaveConflictResolution.xlLocalSessionChanges, Type.Missing, Type.Missing);