CSV экспорт с взаимодействием - PullRequest
0 голосов
/ 20 сентября 2010

Я использую этот код для создания файла Excel. Изменить экспорт в файл CSV должно быть просто, просто изменив параметр в вызове saveAs, но это не работает. Любая идея почему?

        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);
            }
        }

Ответы [ 2 ]

2 голосов
/ 04 марта 2011

XlSaveAsAccessMode.xlShared является причиной. я не знаю почему, но я тоже получаю эту ошибку. Я пытаюсь изменить XlSaveAsAccessMode.xlNoChange и XlSaveAsAccessMode.xlExclusive,

это сработало!

2 голосов
/ 28 октября 2010

я использовал старый способ.строки строк, с запятыми

...