简体   繁体   中英

Save an excel file in c#

  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

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#

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