首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > C# >

c# excel 复制一个sheet到一个新建的excel中!运行年代码出错求大神帮忙修改

2013-07-16 
c# excel 复制一个sheet到一个新建的excel中!运行时代码出错求大神帮忙修改!private bool CobyEXCEL(strin

c# excel 复制一个sheet到一个新建的excel中!运行时代码出错求大神帮忙修改!
        private bool CobyEXCEL(string sourcePath)
        {
            bool result = false;
            Excel.XlFixedFormatType targetType = Excel.XlFixedFormatType.xlTypePDF;
            object missing = Type.Missing;
            Excel.ApplicationClass application = null;
            Excel.Workbook workBook = null;
            try
            {
                application = new Excel.ApplicationClass();
                object type = targetType;
                workBook = application.Workbooks.Open(sourcePath, missing, missing, missing, missing, missing,
                        missing, missing, missing, missing, missing, missing, missing, missing, missing);
                //Excel.Worksheet worksheet = (Excel.Worksheet)workBook.Sheets["sheet1"];
                Excel.Sheets shs = workBook.Sheets;

                Excel.Worksheet worksheet = (Excel.Worksheet)shs.get_Item(1);

             //定义一个COM中空类型的对象
            object missing1=System.Reflection.Missing.Value;
            Excel.Application app = new Excel.ApplicationClass();
            app.Application.Workbooks.Add(true);
            Excel.Workbook book =(Excel.Workbook)app.ActiveWorkbook;
            //worksheet = (Excel.Worksheet)book.Worksheets.Add();


           // Excel.Worksheet sheet = (Excel.Worksheet)book.Sheets[1];
            Excel.Worksheet sheet = (Excel.Worksheet)book.ActiveSheet;
            //worksheet.Copy(sheet, Type.Missing);//用这个报0x800A03EC

            //worksheet = worksheet.get_Item(1); 
            Excel.Range range = worksheet.get_Range(worksheet.Cells[1,1], worksheet.Cells[worksheet.Rows.Count, worksheet.Columns.Count]);
            worksheet.Cells.Select();
            worksheet.Cells.Copy(Type.Missing); 

    
            Excel.Range test = ((Excel.Range)sheet.Cells[1, 1]);
            test.Select();

            app.DisplayAlerts = false;
            test.Parse(Missing.Value, Missing.Value); //这边复制出来没有内容

              
            //保存excel文件
            book.SaveCopyAs("D:\\test.xls");
            //关闭文件
            book.Close(false, missing1, missing1);
            //退出excel
            app.Quit();
            
            }
            catch
            {
                result = false;
            }
            finally
            {
                if (workBook != null)


                {
                    workBook.Close(true, missing, missing);
                    workBook = null;
                }
                if (application != null)
                {
                    application.Quit();
                    application = null;
                }
                GC.Collect();
                GC.WaitForPendingFinalizers();
                GC.Collect();
                GC.WaitForPendingFinalizers();
            }
            return result;
        }
[解决办法]
worksheet.Copy(sheet, Type.Missing);//用这个报0x800A03EC
参数反了吧
[解决办法]
权限问题的,在控制面板----Administrative Tools----Component Services---Dcom config里面开放权限试下

热点排行