在c#中保存excel文件

hap*_*ile 1 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)
       {

       }
 }
Run Code Online (Sandbox Code Playgroud)

在这里,我打开一个excel表,尝试增加列宽,并需要将列标题设置为粗体 并保存文档,此时文档未保存.我正在使用vs 2008,c#3.5

有什么我在这里做错了吗?任何有关这方面的帮助都很适合寻找解决方案

Edw*_*eno 5

我使用VS 2010和.NET 4运行以下代码,但此代码仍应在您的环境中运行.另外,我简化了你的代码.希望这会让你朝着正确的方向前进.

    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)
        {
        }
    } 
Run Code Online (Sandbox Code Playgroud)

UPDATE

您可以在http://www.dotnetperls.com/excel上找到类似的解释/示例

Marshal.ReleaseComObject(book);  // do this after the close
Run Code Online (Sandbox Code Playgroud)

此外,有关清理Excel/COM的良好讨论... 如何在c#中正确清理Excel互操作对象