作者:卖火柴的萌小猪_966 | 来源:互联网 | 2023-05-17 06:58
使用ClosedXML从Excel文件中读取我的Excel文件不在表格数据中。我试图从excel文件中读取。我的excel文件中的部分是表格式的。我需要遍历第3到第20行,这些是表
使用ClosedXML从Excel文件中读取
我的Excel文件不在表格数据中。 我试图从excel文件中读取。 我的excel文件中的部分是表格式的。
我需要遍历第3到第20行,这些是表格并读取数据。
这是我的代码派对:
string fileName = "C:\Folder1\Prev.xlsx"; var workbook = new XLWorkbook(fileName); var ws1 = workbook.Worksheet(1);
如何循环第3到第20行并读取第3,4,6,7,8列? 此外,如果一行为空,我如何确定,以便我可以跳过它而不读取每列具有给定行的值。
要访问一行:
var row = ws1.Row(3);
要检查行是否为空:
bool empty = row.IsEmpty();
要访问行中的单元格(列):
var cell = row.Cell(3);
要从单元格中获取值:
object value = cell.Value; // or string value = cell.GetValue();
有关更多信息,请参阅文档 。
我更喜欢使用RowsUsed()
方法来获取只有非空或用户编辑过的行的列表。 这样我可以避免检查每一行是否为空。
我不确定它是否符合您在post中描述的确切问题陈述,但此代码段可以帮助您处理所有非空行中的第3到第20行,因为我已经过滤掉了空在开始处理之前的行。 在开始处理之前过滤非空行可能会影响您实际要处理的行号。
但是我觉得RowsUsed()
方法在处理Excel工作表的行时在任何一般情况下都非常有用。
string fileName = "C:\Folder1\Prev.xlsx"; using (var excelWorkbook = new XLWorkbook(fileName)) { var nOnEmptyDataRows= excelWorkbook.Worksheet(1).RowsUsed(); foreach (var dataRow in nonEmptyDataRows) { //for row number check if(dataRow.RowNumber() >=3 && dataRow.RowNumber() <= 20) { //to get column # 3's data var cell = dataRow.Cell(3).Value; } } }
这是我的果酱。
var rows = worksheet.RangeUsed().RowsUsed().Skip(1); // Skip header row foreach (var row in rows) { var rowNumber = row.RowNumber(); // Process the row }
如果您只使用.RowsUsed()
,则您的范围将包含大量列。 超过实际填写的方式!
因此,首先使用.RangeUsed()
来限制范围。 这将有助于您更快地处理文件!
您还可以使用.Skip(1)
跳过列标题行(如果有的话)。
上述就是C#学习教程:使用ClosedXML从Excel文件中读取分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注---编程笔记