CSV导出与互操作

我正在使用这段代码来生成一个Excel文件。 将导出更改为CSV文件应该很简单,只需修改saveAs调用中的参数即可,但不起作用。 任何ideea为什么?

Microsoft.Office.Interop.Excel.Application xlApp = new Microsoft.Office.Interop.Excel.Application(); xlApp.Visible = false; if (xlApp == null) { MessageBox.Show("EXCEL could not be started. Check that your office installation and project references are correct."); return false; } Workbook wb = xlApp.Workbooks.Add(XlWBATemplate.xlWBATWorksheet); try { if (details != false) { //Workbook wb = xlApp.Workbooks.Add(XlWBATemplate.xlWBATWorksheet); wb.Worksheets.Add(); Worksheet detailsWs = (Worksheet)wb.Worksheets[2]; for (int i = 0; i < dt.Columns.Count; i++) { detailsWs.Cells[1, i + 1] = dt.Columns[i].Caption; } } Worksheet ws = (Worksheet)wb.Worksheets[1]; if (ws == null) { MessageBox.Show("Worksheet could not be created. Check that your office installation and project references are correct."); } for (int i = 0; i < dt.Columns.Count; i++) { ws.Cells[1, i + 1] = dt.Columns[i].Caption; } for (int i = 0; i < dt.Rows.Count; i++) { for (int j = 0; j < dt.Columns.Count; j++) { ws.Cells[i + 2, j + 1] = dt.Rows[i].ItemArray[j]; } worker.ReportProgress((i * 100) / dt.Rows.Count); } wb.SaveAs(filename, XlFileFormat.xlCSV, Type.Missing, Type.Missing, Type.Missing, Type.Missing, XlSaveAsAccessMode.xlShared, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing); wb.Close(true, filename); return true; } catch (Exception ex) { throw ex; } finally { // Cleanup GC.Collect(); GC.WaitForPendingFinalizers(); GC.Collect(); GC.WaitForPendingFinalizers(); if (wb != null) { wb.Close(Type.Missing, Type.Missing, Type.Missing); Marshal.FinalReleaseComObject(wb); } if (xlApp != null) { xlApp.Quit(); Marshal.FinalReleaseComObject(xlApp); } } 

我用旧的方式。 string的行,用逗号

XlSaveAsAccessMode.xlShared是原因。 我不知道为什么,但我也得到了这个错误。 我尝试更改XlSaveAsAccessMode.xlNoChangeXlSaveAsAccessMode.xlExclusive

有效!