Using Microsoft.Office.Interop to save created file with C#

12,392

Do you actually have permission to save files to the root of C? I think by default you don't have that in Windows 7.

You can try it by just trying to save an Excel file manually to C:.

Share:
12,392
Eyla
Author by

Eyla

Software Engineer

Updated on June 04, 2022

Comments

  • Eyla
    Eyla almost 2 years

    I have the this code that will create excel file and work sheet then insert same values.

    The problem I'm facing that I'm not able to save the file with name giving ten colse it.

    I used SaveAs but did not work:

    wb.SaveAs(@"C:\mymytest.xlsx", missing, missing, missing, missing,
         missing, XlSaveAsAccessMode.xlExclusive, missing, missing, missing, missing, missing);
    

    this line of code would give me this error:

    Microsoft Office Excel cannot access the file 'C:\A3195000'. 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.

    please advice to solve this problem.

    here is my code:

    private void button1_Click(object sender, EventArgs e)
    {
      Microsoft.Office.Interop.Excel.Application xlApp = new Microsoft.Office.Interop.Excel.Application();
    
      if (xlApp == null)
      {
        MessageBox.Show("EXCEL could not be started. Check that your office installation and project references are correct.");
        return;
       }
       xlApp.Visible = true;
    
       Workbook wb = xlApp.Workbooks.Add(XlWBATemplate.xlWBATWorksheet);
       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.");
       }
    
       // Select the Excel cells, in the range c1 to c7 in the worksheet.
       Range aRange = ws.get_Range("C1", "C7");
    
       if (aRange == null)
       {
         MessageBox.Show("Could not get a range. Check to be sure you have the correct versions of the office DLLs.");
       }
    
       // Fill the cells in the C1 to C7 range of the worksheet with the number 6.
       Object[] args = new Object[1];
       args[0] = 6;
       aRange.GetType().InvokeMember("Value", BindingFlags.SetProperty, null, aRange, args);
    
       // Change the cells in the C1 to C7 range of the worksheet to the number 8.
       aRange.Value2 = 8;
       //       object missing = Type.Missing;
       //       wb.SaveAs(@"C:\mymytest.xlsx", missing, missing, missing, missing,
       //missing, XlSaveAsAccessMode.xlExclusive, missing, missing, missing, missing, //missing);
    
    }