Невозможно скопировать лист Excel из книги A в книгу B?

#c# #.net #excel #winforms #interop

#c# #.net #excel #winforms #взаимодействие

Вопрос:

Я пытаюсь скопировать рабочий лист «Config» из файла Excel A в файл Excel B, используя приведенный ниже код, но я получаю следующую ошибку:

Необработанное исключение типа ‘System.Runtime.Службы взаимодействия.Произошло исключение COMException Дополнительная информация: Исключение из HRESULT: 0x800A03EC

  Microsoft.Office.Interop.Excel.Application xlApp = null;
                Microsoft.Office.Interop.Excel.Workbook xlWorkBook = null;
                Microsoft.Office.Interop.Excel.Worksheet xlWorkSheet1;

            string reportname = ServerName;
            string Destfilepath = string.Empty;
            Destfilepath = Application.StartupPath   "\StandardReports\"   reportname   ConfigurationManager.AppSettings["ExcelType"].ToString();


            object misValue = System.Reflection.Missing.Value;

    xlApp = new Microsoft.Office.Interop.Excel.Application();
            xlApp.DisplayAlerts = false;
            xlWorkBook = xlApp.Workbooks.Open(Destfilepath, 0, true, 5, "", "", true, Microsoft.Office.Interop.Excel.XlPlatform.xlWindows, "t", false, false, 0, true, 1, 0);



            Excel.Worksheet wrkD = ((Excel.Worksheet)xlWorkBook.Worksheets["Config"]);            

            Excel.Application excelApp = new Excel.Application();
            excelApp.DisplayAlerts = false;
            // Create a new Excel Workbook
            string SourcePath = Application.StartupPath   @"TempletStdReport"   ConfigurationManager.AppSettings["ExcelType"].ToString();
            //string outputPath = System.Windows.Forms.Application.StartupPath   @"Receipt.sdc";
            Excel.Workbook SourceexcelWorkbook = excelApp.Workbooks.Open(SourcePath,
        Type.Missing, Type.Missing, Type.Missing, Type.Missing,
        Type.Missing, Type.Missing, Type.Missing, Type.Missing,
        Type.Missing, Type.Missing, Type.Missing, Type.Missing,
        Type.Missing, Type.Missing);


            Excel.Worksheet wksh1S = ((Excel.Worksheet)excelApp.ActiveWorkbook.Worksheets[1]);
            Excel.Worksheet wksh2D = ((Excel.Worksheet)xlApp.ActiveWorkbook.Worksheets[2]);
            wksh1S.Copy(wksh2D);// I am getting error here
  

Примечание: мой мотив — скопировать лист «Config» из файла Excel A и добавить его в файл Excel B. В B уже есть файл «Config», я хотел бы либо перезаписать этот лист, либо удалить и добавить новый из A.

Комментарии:

1. Кроме того, начиная с C # 4.0 (выпущен 6 лет назад), вам не нужны все аргументы / Type.Missing . например excelApp.Workbooks.Open(SourcePath) , будет работать нормально.

2. @CharlesMager спасибо, я буду иметь это в виду.

3. Проблема, вероятно, связана с тем, что вы пытаетесь скопировать лист между различными экземплярами приложения . Попробуйте открыть две свои книги в одном экземпляре Excel.