在c#中编辑一个现有的Excel文件。 收到COMException

所以,我在主窗口的同一个wpf应用程序中创build了一个Excel文件。 现在,我想编辑该文件,以便我可以添加另一个工作表并在其上放置一些数据。

该文件创build自己很好,并把所有必要的数据,但当我试图再次调用一个COMExcpetion来说,它无法find该文件,但文件是有!

我认为这不是什么市长,但非常感谢你的帮助!

这里是代码:

private void Nextday_Click(object sender, RoutedEventArgs e) { Microsoft.Office.Interop.Excel.Application xlApp = new Microsoft.Office.Interop.Excel.Application(); xlApp.Visible = true; Workbook wb = xlApp.Workbooks.Open(@"C:Users\Public\Documents\Report.xls"); Worksheet ws2 = (Worksheet)wb.Worksheets[2]; ws2.Name = "Part Function"; object misValue = System.Reflection.Missing.Value; int i = 1; ws2.Cells[i, 1] = "Part Function Auto"; i++; ws2.Cells[i, 1] = "Problem Reported in TestID#:"; i++; ws2.Cells[i, 1] = "Problem is:"; i++; ws2.Cells[2, 2] = testBox.Text; wb.Save(); wb.Close(); } 

这里是我如何创buildExcel文件的第一位。

  private void submit_Click(object sender, RoutedEventArgs e) { Microsoft.Office.Interop.Excel.Application xlApp = new Microsoft.Office.Interop.Excel.Application(); xlApp.Visible = false; Workbook wb = xlApp.Workbooks.Add(XlWBATemplate.xlWBATWorksheet); Worksheet ws = (Worksheet)wb.Worksheets[1]; ws.Name = "Personal Info"; wb.Sheets.Add(After: wb.Sheets[wb.Sheets.Count]); object misValue = System.Reflection.Missing.Value; TextRange programTxt = new TextRange(program.Document.ContentStart, program.Document.ContentEnd); TextRange dateTxt = new TextRange(date.Document.ContentStart, date.Document.ContentEnd); TextRange vinTxt = new TextRange(vin.Document.ContentStart, vin.Document.ContentEnd); TextRange dandrTxt = new TextRange(dandr.Document.ContentStart, dandr.Document.ContentEnd); TextRange cdsidTxt = new TextRange(cdsid.Document.ContentStart, cdsid.Document.ContentEnd); TextRange milestoneTxt = new TextRange(milestone.Document.ContentStart, milestone.Document.ContentEnd); TextRange alertTxt = new TextRange(alert.Document.ContentStart, alert.Document.ContentEnd); int i = 1; ws.Cells[i, 1] = "Program:"; i++; ws.Cells[i, 1] = "Date:"; i++; ws.Cells[i, 1] = "VIN:"; i++; ws.Cells[i, 1] = "D & R:"; i++; ws.Cells[i, 1] = "CDS ID:"; i++; ws.Cells[i, 1] = "Milestone:"; i++; ws.Cells[i, 1] = "Alert:"; i++; ws.Cells[i, 1] = "Region:"; i++; int j = 1; ws.Cells[j, 2] = programTxt.Text; j++; ws.Cells[j, 2] = dateTxt.Text; j++; ws.Cells[j, 2] = vinTxt.Text; j++; ws.Cells[j, 2] = dandrTxt.Text; j++; ws.Cells[j, 2] = cdsidTxt.Text; j++; ws.Cells[j, 2] = milestoneTxt.Text; j++; ws.Cells[j, 2] = alertTxt.Text; j++; if (EU.IsChecked == true) { ws.Cells[j, 2] = EU.Content; j++; } if (Canada.IsChecked == true) { ws.Cells[j, 2] = Canada.Content; j++; } if (USA.IsChecked == true) { ws.Cells[j, 2] = USA.Content; j++; } wb.SaveAs(@"C:Users\Public\Documents\Report.xls"); wb.Close(); } 

编辑,固定

所以,我们修好了! 我不知道为什么,但显然文件path是问题。 我将其更改为WB = _Excel.Workbooks.Open("C:\\Users\\Public\\Documents\\Report.xls"); 现在它的作品!

您可能仍然locking文件。 您需要closures您的工作簿和应用程序。

 wb.Close(); ws.Close(); xlapp.Quit();