C# 使用ClosedXML从Excel文件读取

C# 使用ClosedXML从Excel文件读取,c#,closedxml,C#,Closedxml,我的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、

我的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<string>();
object value=cell.value;
//或
字符串值=cell.GetValue();

有关更多信息,请参见。

我更喜欢使用
RowsUsed()
方法来获取仅包含非空或已由用户编辑的行的列表。这样可以避免检查每一行是否为空

我不确定它是否符合您在文章中描述的确切问题陈述,但是这个代码片段可以帮助您处理所有非空行中的第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;
       }
    }
}
string fileName=“C:\\Folder1\\Prev.xlsx”;
使用(var excel工作簿=新的XL工作簿(文件名))
{
var nonEmptyDataRows=excelWorkbook.Worksheet(1.RowsUsed();
foreach(非空数据行中的var数据行)
{
//用于行号检查
如果(dataRow.RowNumber()>=3&&dataRow.RowNumber()这是我的问题

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)
跳过列标题行(如果有)。

您知道如何访问单元格样式并将其作为html样式应用吗?这是另一个问题(您可能应该创建该问题)。您可以使用
单元格访问样式。样式…
但据我所知,您无法将其自动转换为HTML或CSS样式。您必须自己编写一个转换器。您能告诉我如何使用单元格字段获取值吗name@NeerajMehta你应该为此发布一个新问题。立即发布