Search code examples
c#epplus

Skipping the first two rows of an excel spread sheet while writing to it


I have this method that writes data to my excel spreadsheet. I will like to skip the first 2 rows before writing out the data. The first two rows contains headers. How can I skip the first 2 rows ?

            public ExcelWorksheet WriteToExcelWorksheet(ExcelPackage package, IEnumerable<IEnumerable<string>> data)
            {
                var rows = data.ToList();
                var ws = package.Workbook.Worksheets[0];

                for (var r = 0; r < rows.Count; r++)
                {
                    var row = rows[r].ToList();
                    for (var c = 0; c < row.Count; c++)
                    {
                        if (!string.IsNullOrWhiteSpace(row[c]))
                        {
                            if (decimal.TryParse(row[c], out var d))
                            {
                                ws.Cells[r + 1, c + 1].Value = d;
                            }
                            else
                            {
                                ws.Cells[r + 1, c + 1].Value = row[c];
                            }
                        }
                    }
                }

                return ws;
            }

Solution

  • Simply start writing rows accordingly :)

    So in this line for example:

    ws.Cells[r + 1, c + 1].Value = d;
    

    make

    ws.Cells[r + 3, c + 1].Value = d;
    

    having:

    public ExcelWorksheet WriteToExcelWorksheet(ExcelPackage package, IEnumerable<IEnumerable<string>> data)
    {
        var rows = data.ToList();
        var ws = package.Workbook.Worksheets[0];
    
        for (var r = 0; r < rows.Count; r++)
        {
            var row = rows[r].ToList();
            for (var c = 0; c < row.Count; c++)
            {
                if (!string.IsNullOrWhiteSpace(row[c]))
                {
                    if (decimal.TryParse(row[c], out var d))
                    {
                        ws.Cells[r + 3, c + 1].Value = d;
                    }
                    else
                    {
                        ws.Cells[r + 3, c + 1].Value = row[c];
                    }
                }
            }
        }
    
        return ws;
    }