使用c#在excel中获取指定的行数
本文关键字:取指 获取 excel 使用 | 更新日期: 2023-09-27 18:15:57
我有一个excel模板,我有1-100行填写只是与ID,我的其他列名和电子邮件是空的。
ID Name Email
1
2
3
.
.
100
这里我在excel中没有数据,当我试图获得行数时,我得到100,但我想获得姓名或电子邮件的行数,这是充满数据的,我怎么能做到这一点。
Excel.Application xlApp;
Excel.Workbook xlWorkBook;
Excel.Worksheet xlWorkSheet;
Excel.Range range;
xlApp = new Excel.ApplicationClass();
xlWorkBook = xlApp.Workbooks.Open(fileName, 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);
range = xlWorkSheet.UsedRange;
int iRowCount = xlWorkSheet.UsedRange.Rows.Count;
您必须遍历行,因为Excel将始终显示工作表的最大使用行数和列数。
另外,我建议你不要使用Excel来读取数据。而是使用一些库,可以直接读取文件(而不依赖于安装的Excel)。我非常成功地使用了http://exceldatareader.codeplex.com/(至少对于xlsx文件)。你可能也想下载最新的源代码并自己构建它们,因为发行版不是很新,而且有很多修复。
PS不使用Excel也可以解决性能问题,因为你在代码中展示的使用Excel非常慢,当你开始遍历行时,这真的很重要。
ExcelDataReader,另一方面,将给出一个数据表的数据从excel工作表,并将能够解析它,因为你想要在内存中,这应该是100-1000倍的速度比excel工作。
您必须访问列中的每个Cell,并使用
检查它是否包含数据:xlWorkSheet.Cells(x, y).Value
一个简单的方法是检查哪些行包含Name或Email的值。使用
System.Array values = (System.Array)range.Cells.Value;
之后循环遍历数组并检查Name或Email是否不同于string.IsNullOrWhiteSpace.