应用程序创建excel的代码如下所示
            Excel.Application xlApp = new Excel.Application();
            Excel.Workbook xlBook;
            Excel.Worksheet xlSheet;
            xlApp.DisplayAlerts = false;
            object missing = Missing.Value;            xlBook = xlApp.Workbooks.Add(true);
            for (int i = 0; i < ds.Tables.Count; i++)
            {
                int rowIndex = 1;
                int colIndex = 0;                System.Data.DataTable Table = ds.Tables[i];
                xlSheet = (Excel.Worksheet)xlApp.Worksheets.Add(missing, missing, missing, missing);
                xlSheet.Name = Table.TableName;                foreach (DataColumn Col in Table.Columns)
                {
                    colIndex = colIndex + 1;
                    xlApp.Cells[rowIndex, colIndex] = Col.ColumnName;
                }                foreach (DataRow Row in Table.Rows)
                {
                    rowIndex = rowIndex + 1;                    colIndex = 0;
                    foreach (DataColumn Col in Table.Columns)
                    {
                        colIndex = colIndex + 1;
                        xlApp.Cells[rowIndex, colIndex] = Row.ItemArray[colIndex - 1];
                    }
                }
                
                xlSheet.SaveAs(saveFileName, missing, missing, missing, missing, missing, missing, missing, missing, missing);
            }                           m_objBook.SaveAs(@"C:\Documents and Settings\shiyunxia\桌面\Book4.xls", m_objOpt, m_objOpt,
                m_objOpt, m_objOpt, m_objOpt, Excel.XlSaveAsAccessMode.xlNoChange, m_objOpt, m_objOpt,
                m_objOpt, m_objOpt,m_objOpt);
            m_objBook.Close(false, m_objOpt, m_objOpt);
            m_objExcel.Quit();问题:
程序正运行到上述创建代码部分,如果用鼠标打开任何excel文档,则当前该被打开的excel文档内容会被被复制到新建的excel中,也即新建的excel会含打开excel文档的内容.

解决方案 »

  1.   

    xlApp.Cells 改为 xlSheet.Cells 吧。
      

  2.   

    excel.Application.Workbooks.Add(true);
      

  3.   

    (一楼)是对的,那个地方是应该修改.
    但是修改之后还有一个严重的问题是:在创建期间如果不操作打开的文档没有任何问题,但是如果对打开的excel文档做任何操作,程序会报异常.
    修改之后的代码:
                Excel.Application xlApp = new Excel.Application();
                Excel.Workbook xlBook; 
                Excel.Worksheet xlSheet; 
                xlApp.DisplayAlerts = false; 
                object missing = Missing.Value;             xlBook = xlApp.Workbooks.Add(true);
                for (int i = 0; i < ds.Tables.Count; i++)
                {
                    int rowIndex = 1;
                    int colIndex = 0;                System.Data.DataTable Table = ds.Tables[i];
                    // 修改
                    xlSheet = (Excel.Worksheet)xlBook.Worksheets.Add(missing, missing, missing, missing);
                    xlSheet.Name = Table.TableName;                foreach (DataColumn Col in Table.Columns)
                    {
                        colIndex = colIndex + 1;
                        // 修改
                        xlSheet.Cells[rowIndex, colIndex] = Col.ColumnName;
                    }                foreach (DataRow Row in Table.Rows)
                    {
                        rowIndex = rowIndex + 1;                    colIndex = 0;
                        foreach (DataColumn Col in Table.Columns)
                        {
                            colIndex = colIndex + 1;
                            // 修改
                            xlSheet.Cells[rowIndex, colIndex] = Row.ItemArray[colIndex - 1];
                        }
                    }
                }             
               // 修改
               xlBook.SaveAs(saveFileName, missing, missing, missing, missing, missing, missing, missing, missing, missing); 
               xlBook.Close(false, m_objOpt, m_objOpt);
               ......
               xlApp.Quit();
      

  4.   

    http://www.cnblogs.com/downmoon/archive/2009/01/16/1376702.html
    http://blog.csdn.net/downmoon/archive/2009/01/16/3796652.aspx