Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Save an excel file in c#

Tags:

c#

excel

  void excelsave()
  {
      try
      {
          ApplicationClass app = new ApplicationClass(); // the Excel application.

          Workbook book = null;
          Worksheet sheet = null;
          Range range = null;
          // the range object is used to hold the data
          app.Visible = false;
          app.ScreenUpdating = false;
          app.DisplayAlerts = false;

          string execPath =
            Path.GetDirectoryName(Assembly.GetExecutingAssembly().CodeBase);

          book = app.Workbooks.Open(@"E:\SSIS\ABC\Book1.xls",
               Missing.Value, Missing.Value, Missing.Value,
               Missing.Value, Missing.Value, Missing.Value, Missing.Value,
               Missing.Value, Missing.Value, Missing.Value, Missing.Value,
               Missing.Value, Missing.Value, Missing.Value);
          sheet = (Worksheet)book.Worksheets[1];

          range = sheet.get_Range("A1", Missing.Value);
          range.Columns.ColumnWidth = 22.34;
          range = sheet.get_Range("B1", Missing.Value);
          range.Columns.ColumnWidth = 22.34;
          book.SaveAs(@"E:\SSIS\ABC\Book1.xls", Type.Missing, Type.Missing,
            Type.Missing, Type.Missing, Type.Missing, XlSaveAsAccessMode.xlExclusive,
            Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing);
       }
       catch (Exception ex)
       {

       }
 }

Here I am opening an excel sheet trying to increase the column width and need to make the column headers as bold and save the document, right now the document is not getting saved. I am using vs 2008, c# 3.5

Is There anything that I am doing wrong here? any help on this would be great looking an for solution

like image 707
happysmile Avatar asked Jan 16 '12 02:01

happysmile


People also ask

Can a macro save a File?

Additionally, you can use a Microsoft Visual Basic for Applications macro to save the active workbook and use a variable for the file name.

What is Excel in C?

The Excel C API is the ideal choice when you want to create high-performance worksheet functions by creating XLL add-ins. The C API provides you with the most direct access to worksheet data. XLLs provide Excel with the most direct access to the DLL resources.


1 Answers

I ran the following using VS 2010 and .NET 4, but this code should still work in your environment. Also, I simplified your code a bit. Hopefully this will get you going in the right direction.

    static void excelsave()
    {
        try
        {
            Application app = new Application();
            string execPath =
              Path.GetDirectoryName(Assembly.GetExecutingAssembly().CodeBase);

            Workbook book = app.Workbooks.Open(@"c:\test.xls");
            Worksheet sheet = (Worksheet)book.Worksheets[1];

            Range range = sheet.get_Range("A1");
            range.Columns.ColumnWidth = 22.34;
            range = sheet.get_Range("B1");
            range.Columns.ColumnWidth = 22.34;

            sheet.get_Range("A1", "B1").Font.Bold = true;

            book.SaveAs(@"c:\test2.xls");  // or book.Save();
            book.Close();
        }
        catch (Exception ex)
        {
        }
    } 

UPDATE

You can find a similar explanation/example of what you are doing at: http://www.dotnetperls.com/excel

Marshal.ReleaseComObject(book);  // do this after the close

Also, there is a good discussion on cleaning up Excel/COM ... How To Properly Clean Up Excel Interop Objects In c#

like image 55
Edward Leno Avatar answered Sep 20 '22 06:09

Edward Leno