2015-07-31 3 views
0

Я пытаюсь скопировать существующий лист Excel в мой текущий файл excel. Я использую этот код.Исключение из HRESULT: 0x800A03EC while copy excel sheet

      Workbook wkActive = Globals.ThisAddIn.Application.ActiveWorkbook; 
         Microsoft.Office.Interop.Excel.Workbook workbook = Globals.ThisAddIn.Application.Workbooks.Open(IdsTemplatePath, 0, true, 5, "", "", true, XlPlatform.xlWindows, "\t", false, false, 0, true, false, false); 
         Microsoft.Office.Interop.Excel.Worksheet worksheet = workbook.Sheets[1] as Microsoft.Office.Interop.Excel.Worksheet; 
         worksheet.Copy(Type.Missing, wkActive); 
         wkActive.Save(); 

но когда в методе копирования я получаю ошибку

Exception from HRESULT: 0x800A03EC 

то, что я делаю неправильно и что я должен сделать для завершения моей задачей

+0

Почему вы передаете «Readonly'' true» и смените «Конвертер» на 1 с 0. –

ответ

0

Я получил решение

Microsoft.Office.Interop.Excel.Workbook CurrentWk = ((Microsoft.Office.Interop.Excel.Workbook)Globals.ThisAddIn.Application.ActiveWorkbook); 
         if (Path.GetExtension(CurrentWk.Name) != ".xlsx") 
         { 
          MessageBox.Show("Please save the document before complete this task", "warning"); 
         } 
         else 
         { 
          Microsoft.Office.Interop.Excel.Workbook workbook = Globals.ThisAddIn.Application.Workbooks.Open(IdsTemplatePath, 0, true, 5, "", "", true, XlPlatform.xlWindows, "\t", false, false, 0, true, false, false); 
          Microsoft.Office.Interop.Excel.Worksheet worksheet = null; 
          totalSheet = workbook.Worksheets.Count; 
          for (int sheetNum = 1; sheetNum <= totalSheet; sheetNum++) 
          { 
           worksheet = (Microsoft.Office.Interop.Excel.Worksheet)workbook.Worksheets[sheetNum]; 
           sheetname = worksheet.Name.Replace("\r", "").Replace("\a", "").Trim().ToLower(); 
           if (sheetname == "ids_template") 
           { 
            try 
            { 
             worksheet.Copy(CurrentWk.Sheets[1]); 
             workbook.Close(SaveChanges, Type.Missing, Type.Missing); 
            } 
            catch { } 
            ids_template_found = true;//here it is set true because template sheet is added above in current workbook. 
            break; 
           } 
          } 
         } 
Смежные вопросы