使用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;

使用c#在excel中获取指定的行数

您必须遍历行,因为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.