2012-03-30 32 views
5

Tôi mở nộp excel như thế này:hàng xóa từ một file excel sử dụng C#

Excel.Application xlApp; 
Excel.Workbook xlWorkBook; 
Excel.Worksheet xlWorkSheet; 
Excel.Range range; 

string str; 
int rCnt = 0; 
int cCnt = 0; 

xlApp = new Excel.ApplicationClass(); 
xlWorkBook = xlApp.Workbooks.Open("csharp.net-informations.xls", 0, true, 5, "", "", true, Microsoft.Office.Interop.Excel.XlPlatform.xlWindows, "\t", false, false, 0, true, 1, 0); 
xlWorkSheet = (Excel.Worksheet)xlWorkBook.Worksheets.get_Item(1); 

Tôi muốn biết:
Làm thế nào để lặp qua tất cả các hàng và xóa tất cả các hàng trong đó chuỗi SomeString không xuất hiện trong column A?

tôi biết làm thế nào để lặp qua mỗi giá trị:

for (rCnt = 1; rCnt <= range.Rows.Count; rCnt++) 
{ 
    for (cCnt = 1; cCnt <= range.Columns.Count; cCnt++) 
    { 
     str = (string)(range.Cells[rCnt, cCnt] as Excel.Range).Value2; 
     MessageBox.Show(str); 
    } 
} 

Nhưng tôi không biết làm thế nào để xóa toàn bộ hàng

+1

Bạn có thể sử dụng: 'range.EntireRow.Delete (Excel.XLDirection.xlUp)' - chỉ cần đặt phạm vi với đối tượng trang tính (xlWorksheet). –

+0

@PatrickPitre cảm ơn rất nhiều! làm thế nào để tôi thiết lập phạm vi? –

+1

Nó sẽ giống như: range = xlWorksheet.get_Range ("A1", "B1"); range.EntireRow.Delete (Excel.XLDirection.xlUp); –

Trả lời

15

Một khi bạn có một tham chiếu đến bảng tính nói

for(int i = 1; i <=100; i++) 
{ 
    if(!worksheet.Cells[i,1].Contains("SomeString")) 
    { 
    ((Range)worksheet.Rows[i]).Delete(shiftDirection) 
    } 
} 

nơi shiftDirection xem tại đây: Range.Delete method

Bạn có thể phải truyền nội dung của ô vào một chuỗi.

Các vấn đề liên quan