2016-02-03 2 views
0

Я хочу динамически вставлять несколько строк в лист excel, но когда я попытался использовать приведенный ниже код, как было предложено во многих ответах в стека над потоком, но он бросает ошибку.Microsoft.Office.Interop.Excel.Worksheet не содержит определения для 'InsertRow'

//Inserting 10 rows into the worksheet starting from 3rd row 

worksheet.Cells.InsertRows(2,10); 

Microsoft.Office.Interop.Excel.Worksheet doesnot contain a definition for 'InsertRow' 
and no extension method 'InsertRow' acceping a 1st argument of type 'Microsoft.Office.Interop.Excel.Worksheet' 

может ли один помочь мне в этом ...

Согласно предложению, приведенному ниже, я пытался не обновить мой код

private void Insert_Empty_Rows() 
    { 
     Excel.Application Excel_App = new Microsoft.Office.Interop.Excel.Application(); 
     Excel.Workbook MyWorkBook = Excel_App.Workbooks.Open(textBox1.Text.ToString(), 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 MyWorksheet = null; 
     MyWorksheet = (Microsoft.Office.Interop.Excel.Worksheet)MyWorkBook.Sheets[(1)]; 
     Excel.Range Excel_Range; 
     Excel_Range = MyWorksheet.UsedRange; 
     for (var x = 0; x < 10; x++) 
     { 
      ((Excel.Range)MyWorksheet.Rows[2]).Insert(); 
     } 

    } 

все еще получаю ошибку «Нет перегрузки для метода«это 'принимает' 1 'аргументы "

ответ

0
private void Insert_Empty_Rows() 
    { 
     Excel.Application Excel_App = new Microsoft.Office.Interop.Excel.Application(); 
     Excel.Workbook MyWorkBook = Excel_App.Workbooks.Open(textBox1.Text.ToString(), 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 MyWorksheet = null; 
     MyWorksheet = (Microsoft.Office.Interop.Excel.Worksheet)MyWorkBook.Sheets[(1)]; 
     Excel.Range Excel_Range; 
     Excel_Range = MyWorksheet.UsedRange; 
     for (var x = 0; x < 10; x++) 
     { 
      ((Excel.Range)MyWorksheet.Rows[2,Type.Missing]).Insert(Excel.XlInsertShiftDirection.xlShiftDown, Type.Missing); 
     } 
     SaveFileDialog SaveFileDialog1 = new SaveFileDialog(); 
     SaveFileDialog1.Title = "Browse to Save Excel Files"; 
     SaveFileDialog1.DefaultExt = "xls"; 
     SaveFileDialog1.Filter = "Excel files (*.xls or *.xlsx)|*.xls;*.xlsx|All files (*.*)|*.*"; 
     SaveFileDialog1.FilterIndex = 2; 
     if (SaveFileDialog1.ShowDialog() == DialogResult.OK) 
     { 
      Excel_App.DisplayAlerts = false; 
      MyWorkBook.SaveAs(SaveFileDialog1.FileName, Excel.XlFileFormat.xlWorkbookNormal, misValue, misValue, misValue, misValue, Excel.XlSaveAsAccessMode.xlExclusive, misValue, misValue, misValue, misValue, misValue); 
      MyWorkBook.Close(true, misValue, misValue); 
      Excel_App.Quit(); 
     } 
     Excel_App.Quit(); 
     MessageBox.Show("SOTP Updated Successfully"); 

    } 

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

0

Что-то вроде этого должно сделать трюк, как предложено здесь, например: Excel insert rows (not Add)

 for (var x = 0; x < 10; x++) 
     { 
      ((Range) worksheet.Rows[2]).Insert(); 
     } 
+0

Я устал это, но код это метание и ошибка «Нет перегрузки для метода» this 'принимает' 1 'аргументы \t ".. – sanjeev

+0

Просто попробовал это здесь, и он отлично работает ... какую версию перехвата вы используете? – BunkerMentality

+0

Я использую 12.0.0.0 – sanjeev

Смежные вопросы