在Excel中循环

如何循环使用C#在Excel中的行?

像使用数据表一样循环

foreach(DataRow _dr in datatable.row) { //data } 

我正试着拿到这个。 但它每列循环

 foreach (Excel.Range r in usedRange) { // check condition: try { if (Convert.ToInt32(r.Value2.ToString()) == 0) { // if match, delete and shift remaining cells up: r.Delete(Excel.XlDeleteShiftDirection.xlShiftUp); break; } } catch { } } 

继我的评论

当你遍历一个范围时,它总是从左到右循环,而不是从上到下(除非范围只有一列)

假设你的excel表单看起来像这样

在这里输入图像说明

尝试和testing

 using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; using Excel = Microsoft.Office.Interop.Excel; Namespace WindowsFormsApplication4 { public partial class Form1 : Form { Public Form1() { InitializeComponent(); } private void button1_Click(object sender, EventArgs e) { Microsoft.Office.Interop.Excel.Application xlexcel; Microsoft.Office.Interop.Excel.Workbook xlWorkBook; Microsoft.Office.Interop.Excel.Worksheet xlWorkSheet; Microsoft.Office.Interop.Excel.Range xlRange; object misValue = System.Reflection.Missing.Value; xlexcel = new Excel.Application(); xlexcel.Visible = true; // Open a File xlWorkBook = xlexcel.Workbooks.Open("C:\\Book1.xlsx", 0, true, 5, "", "", true, Microsoft.Office.Interop.Excel.XlPlatform.xlWindows, "\t", false, false, 0, true, 1, 0); // Set Sheet 1 as the sheet you want to work with xlWorkSheet = (Excel.Worksheet)xlWorkBook.Worksheets.get_Item(1); xlRange = xlWorkSheet.UsedRange; for (int i = 1; i <= xlRange.Rows.Count; i++) { for (int j = 1; j <= xlRange.Columns.Count; j++) { if (xlexcel.WorksheetFunction.CountIf(xlRange.Cells[i, j], "0") > 0) { MessageBox.Show("Row " + i + " has 0"); break; } } } //Once done close and quit Excel xlWorkBook.Close(false, misValue, misValue); xlexcel.Quit(); releaseObject(xlWorkSheet); releaseObject(xlWorkBook); releaseObject(xlexcel); } private void releaseObject(object obj) { try { System.Runtime.InteropServices.Marshal.ReleaseComObject(obj); obj = null; } catch (Exception ex) { obj = null; MessageBox.Show("Unable to release the Object " + ex.ToString()); } finally { GC.Collect(); } } } } 

这是你得到的

在这里输入图像说明

我的坏,我混淆了你的代码块。

假设你有一个工作表叫做工作sheet ,试试这个:

 foreach (var row in sheet.UsedRange.Rows) { // either put your logic here, // or look at columns if you prefer /* foreach (var cell in row.Columns) { // do something with cells } /* }