简体   繁体   中英

Microsoft Excel cannot access the file 'C:\0BBAC500'

I have a method to export a dataset to an excel file. Nothing is wrong with the dataset. The problem I am having though is I am getting a weird error when saving the file. It's trying to access the right directory, however it looks like it is adding a string to the directory and ignoring my filename altogether.

public static void ExportDataSetToExcel(DataSet ds, string filename)
    {
        //Creae an Excel application instance
        Microsoft.Office.Interop.Excel.Application excelApp = new Microsoft.Office.Interop.Excel.Application();

        //Create an Excel workbook instance and open it from the predefined location
        Microsoft.Office.Interop.Excel.Workbook excelWorkBook = excelApp.Workbooks.Add();

        foreach (DataTable table in ds.Tables)
        {
            //Add a new worksheet to workbook with the Datatable name
            Microsoft.Office.Interop.Excel.Worksheet excelWorkSheet = excelWorkBook.Sheets.Add();
            excelWorkSheet.Name = table.TableName;

            for (int i = 1; i < table.Columns.Count + 1; i++)
            {
                excelWorkSheet.Cells[1, i] = table.Columns[i - 1].ColumnName;
            }

            for (int j = 0; j < table.Rows.Count; j++)
            {
                for (int k = 0; k < table.Columns.Count; k++)
                {
                    excelWorkSheet.Cells[j + 2, k + 1] = table.Rows[j].ItemArray[k].ToString();
                }
            }
        }
        excelWorkBook.SaveAs(filename);
        excelWorkBook.Close();
        excelApp.Quit();
    }

Things I have tried:

excelWorkBook.SaveAs(filename, Type.Missing, Type.Missing, Type.Missing,
        Type.Missing, Type.Missing, XlSaveAsAccessMode.xlNoChange, 
        Type.Missing, Type.Missing, Type.Missing, Type.Missing,
        Type.Missing);

excelWorkBook.SaveAs("C:\\" + filename)

excelWorkBook.SaveAs("C:\\" + filename + ".xlsx")

excelWorkBook.SaveAs("C:\\myfile.xlsx")

Thanks for your help.

Full Exception Message:

Microsoft Excel cannot access the file 'C:\CEF7C500'. There are several possible reasons:

• The file name or path does not exist.
• The file is being used by another program.
• The workbook you are trying to save has the same name as a currently open workbook.
   at Microsoft.Office.Interop.Excel._Workbook.SaveAs(Object Filename, Object FileFormat, Object Password, Object WriteResPassword, Object ReadOnlyRecommended, Object CreateBackup, XlSaveAsAccessMode AccessMode, Object ConflictResolution, Object AddToMru, Object TextCodepage, Object TextVisualLayout, Object Local)
   at MAP.ToExcel.ExportDataSetToExcel(DataSet ds, String filename) in c:\Users\tmitchell\Source\Workspaces\import\MAP\MAP\ToExcel.cs:line 68
   at MAP.Program.CreateExcelSheet() in c:\Users\tmitchell\Source\Workspaces\import\MAP\MAP\Program.cs:line 140
   at MAP.Program.Main(String[] args) in c:\Users\tmitchell\Source\Workspaces\import\MAP\MAP\Program.cs:line 31
   at System.AppDomain._nExecuteAssembly(RuntimeAssembly assembly, String[] args)
   at System.AppDomain.ExecuteAssembly(String assemblyFile, Evidence assemblySecurity, String[] args)
   at Microsoft.VisualStudio.HostingProcess.HostProc.RunUsersAssembly()
   at System.Threading.ThreadHelper.ThreadStart_Context(Object state)
   at System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx)
   at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx)
   at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)
   at System.Threading.ThreadHelper.ThreadStart()</ExceptionString></Exception></TraceRecord>

Try to replace the lines:

excelWorkBook.SaveAs(filename);
excelWorkBook.Close();

with

excelWorkBook.Saved = true;
excelWorkBook.SaveCopyAs(filename);
excelWorkBook.Close(true, filename, Type.Missing);

Make sure you run the application with admin privileges. The fact is that the system (C:) drive requires admin privileges for writing.

Do you get the same results when you choose another drive for saving files?

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM