2012-09-03 80 views
3

我想從我的表單(使用C#)寫入Excel電子表格並刪除某些行(如果空白)。C#和excel刪除行

我可以完美地寫入一個speadsheet並保存它,但可以說用戶輸入數據到行a1,a2,a3和a4,現在我想刪除a4和a29之間的所有行。

我只需要找出如何刪除一定範圍的單元格。

謝謝

回答

4

你可以使用Range對象來做到這一點。我在這裏假設你正在使用Excel互操作。

讓說,你有你的書打開,然後再設定的範圍內將其刪除 它應該是這個樣子

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

我看你做了什麼沒有。 – TheNoob

+0

我總是收到一個類型不匹配異常,指向 Microsoft.Office.Interop.Excel.Range cel =(Range)excel.Cells [rowIndex,columnIndex]; – TheNoob

+0

在這種情況下,您的工作表或工作簿是「excel」嗎? – TheNoob

2

您可以使用此。它的工作...

_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(); 

欲瞭解更多信息,您可以訪問this網站

+0

引用的網站不包含任何內容。您的答案確切無誤,但是,上面列出的指定範圍成員的答案更清晰。 MSDN提供了很好的文檔。 https://msdn.microsoft.com/en-us/library/Microsoft.Office.Interop.Excel.Range_methods(v=office.14).aspx –

0

您可以指定單元格(如A1),查找包含該小區的範圍內,整個行,然後可以刪除該行。

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

excel.Range cells =(excel.Range)sheet.Range [「A1」,Type.Missing];

excel.Range del = cells.EntireRow;

del.Delete();

上面給出的代碼將刪除第一行從工作表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();