#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.