2012-09-03 5 views
3

Je veux écrire à partir de mon formulaire (en C#) dans une feuille de calcul Excel et supprimer certaines lignes si elles sont vides.C# et Excel supprimer des lignes

Je peux écrire parfaitement sur une feuille de calcul et l'enregistrer, mais disons que l'utilisateur a entré les données dans la ligne a1, a2, a3 et a4, je veux maintenant supprimer toutes les lignes entre a4 et a29.

Tout ce dont j'ai besoin est de savoir comment supprimer une certaine plage de cellules.

Merci

Répondre

4

Vous pouvez le faire en utilisant un objet Range. Je suppose ici que vous utilisez Excel interop.

Disons que vous avez votre livre ouvert, puis définissez la plage puis supprimez-le Il devrait ressembler à ceci

ApplicationClass excel = new ApplicationClass(); 
//Abrir libro y seleccionar la hoja adecuada aqui 
//... 

Microsoft.Office.Interop.Excel.Range cel = (Range)excel.Cells[rowIndex, columnIndex]; 
cel.Delete(); 
+0

Je vois ce que vous avez fait là. – TheNoob

+0

Je reçois toujours une exception d'incompatibilité de type pointant vers Microsoft.Office.Interop.Excel.Range cel = (Range) excel.Cells [rowIndex, columnIndex]; – TheNoob

+0

Dans ce cas, "excelle" votre feuille de travail ou classeur? – TheNoob

2

Vous pouvez l'utiliser. Il travaille ...

_Application docExcel = new Microsoft.Office.Interop.Excel.Application { Visible = false }; 
    dynamic workbooksExcel = docExcel.Workbooks.Open(@"C:\Users\mahmut.efe\Desktop\Book4.xlsx"); 
    var worksheetExcel = (_Worksheet)workbooksExcel.ActiveSheet; 

    ((Range)worksheetExcel.Rows[2, Missing.Value]).Delete(XlDeleteShiftDirection.xlShiftUp); 

    workbooksExcel.Save(); 
    workbooksExcel.Close(false); 
    docExcel.Application.Quit(); 

Pour plus d'informations, vous pouvez visiter this site web

+0

Le site référencé ne contient aucun contenu. Votre réponse n'est pas fausse exactement, cependant, la réponse énumérée ci-dessus spécifiant le membre de gamme est plus propre. MSDN Fournit une excellente documentation à ce sujet. https://msdn.microsoft.com/en-us/library/Microsoft.Office.Interop.Excel.Range_methods(v=office.14).aspx –

0

Vous pouvez spécifier une cellule (par exemple. A1) et trouver toute la ligne contenant cette cellule comme une plage et peut alors supprimer la ligne.

excel.Worksheet sheet = (excel.Worksheet) excelWorkBook.Sheets ["sheet1"];

excel.Plages de cellules = (excel.Range) sheet.Range ["A1", Type.Missing];

excel.Range del = cells.EntireRow;

del.Delete();

Le code ci-dessus donné supprimera première ligne de sheet1

1
// Here is the answers to 
// 1. Delete entire row - Below rows will shift up 
// 2. Delete few cells - Below cells will shift up 
// 3. Clear few cells - No shifting 

    using Excel = Microsoft.Office.Interop.Excel; 

    Excel.Application ExcelApp = new Excel.Application(); 
        Excel.Workbook ExcelWorkbook = ExcelApp.Workbooks.Open(ResultFilePath); 
        ExcelApp.Visible = true; 
        Excel.Worksheet ExcelWorksheet = ExcelWorkbook.Sheets[1]; 

    Excel.Range TempRange = ExcelWorksheet.get_Range("H11", "J15"); 

    // 1. To Delete Entire Row - below rows will shift up 
     TempRange.EntireRow.Delete(Type.Missing); 

    // 2. To Delete Cells - Below cells will shift up 
     TempRange.Cells.Delete(Type.Missing); 

    // 3. To clear Cells - No shifting 
     TempRange.Cells.Clear(); 
Questions connexes