SSIS important des données Excel via C # vers SQL Server

Je viens de commencer avec SSIS et le traitement des files Excel via C # lorsque je suis tombé sur cet article:

Lien

L'article explique comment charger des données Excel via SSIS dans une database SQL Server.

Mais au lieu d'une déclaration sélectionnée, je devrais avoir toutes les lignes extraites à partir d'une ligne spécifique (par exemple, la ligne 9). Maintenant, ma question est, quels morceaux de code dois-je changer / effacer afin de me permettre de définir la ligne de départ sans avoir besoin d'utiliser des informations d'en-tête?

public SourceFileDetails ScanRows(DataSet excelDataSet, ssortingng ExtractionStatement, ssortingng FindColumn) { if (excelDataSet.Tables.Count < 1) return (SourceFileDetails)null; ssortingng ExtractFields = this.ReplaceSsortingng(this.ReplaceSsortingng(ExtractionStatement, "SELECT", ""), "From [Data$]", ""); List<ssortingng> FindSsortingngs = ExtractFields.Split(',').Select(s => s.Trim().Replace("[", "").Replace("]", "").Replace("#", ".").Replace("(", "").Replace(")", "")).ToList(); foreach (DataTable dt in excelDataSet.Tables) { List<ItemValueHolder> FoundAddress = new List<ItemValueHolder>(); int iDuplicates = 0; foreach (DataRow dr in dt.Rows) { int iItemColumnIndex = 0; foreach (var fieldValue in dr.ItemArray) { object cellData = fieldValue; ssortingng sCellData = cellData.ToSsortingng().Replace("#", ".").Replace("[", "").Replace("]", "").Replace("(", "").Replace(")", ""); if (cellData != null) if (FindSsortingngs.Exists(delegate(ssortingng k) { return k.ToLower() == sCellData.ToSsortingng().ToLower(); })) { if (!FoundAddress.Exists(delegate(ItemValueHolder t) { return t.Item.ToLower() == sCellData.ToLower(); })) FoundAddress.Add(new ItemValueHolder(sCellData, dt.Rows.IndexOf(dr), iItemColumnIndex)); else iDuplicates++; } iItemColumnIndex++; } int iTotalFields = FindSsortingngs.Count - iDuplicates; if (100 * FoundAddress.Count / (float)iTotalFields >= 90.00) { var query = FoundAddress.GroupBy( item => item.ItemValue, (itemvalue, items) => new { Key = (int)itemvalue, Count = items.Count(), }); int dataStartAddress = (from p in query where p.Count == (query.Max(it => it.Count)) select p.Key).Max(); dataStartAddress += 1; ssortingng SheetName = "[" + dt.TableName + "$A" + dataStartAddress.ToSsortingng() + ":IV]"; ssortingng _selectCommand = this.ReplaceSsortingng(ExtractionStatement, "[Data$]", SheetName); ssortingng reportDate = ""; if (!ssortingng.IsNullOrEmpty(FindColumn)) try { int ColIndex = (from p in FoundAddress where p.Item.ToLower() == FindColumn.ToLower() select p.ColumnIndex).First(); DataRow drRowReport = dt.Rows[dataStartAddress]; reportDate = drRowReport[ColIndex].ToSsortingng(); } catch (Exception e) { //log } ssortingng NewFields = GetNewFieldsAtSource(FindSsortingngs, dr); return new SourceFileDetails("", "", "", _selectCommand, reportDate, NewFields); } } } return (SourceFileDetails)null; } 

Merci beaucoup!