2016-02-17 4 views
1

В настоящее время я выбираю данные таблицы HTML с веб-страницы и сохраняю любой контент, содержащий тэг Anchor, а затем экспортирую этот список для отображения в Excel.Данные списка синтаксического анализа C# в excel

Проблема, с которой я сталкиваюсь, заключается в том, что я не могу ее правильно отобразить в Excel. В списке содержатся правильные данные, но в excel отображается только последний элемент в списке (кажется, он переписывается каждый раз, когда он выполняет итерацию через список).

Список (cellList) - это список, который содержит правильные данные, попробовал много разных вариантов, чтобы попытаться отобразить его правильно, но просто не могу определить, почему нижеследующее работает некорректно.

Я использовал более или менее один и тот же код foreach для отображения списка из SQL Data в excel одинаково.

Любая помощь или руководство будут высоко оценены.

HtmlTable tabletest = ActiveBrowser.Find.ById<HtmlTable>("MainContent_ucLicensees_gviGeneric"); 
IList<HtmlAnchor> myList = tabletest.Find.AllByTagName<HtmlAnchor>("a"); 

foreach (HtmlAnchor item in myList) 
{ 
    string celltext = item.InnerText.ToString(); 
    List<string> cellList = new List<string>(); 
    cellList.Add(celltext); 

    int row = 2; 
    int col = 2; 
    foreach (var cellitem in cellList) 
    { 
     excelApp.Cells[row, col] = cellitem; 
     row++; 
     if (cellList.IndexOf(cellitem) == cellList.Count - 1) 
     { 
      col = 2; 
     } 
    } 
} 
+0

Как этот список выдаст данные с несколькими столбцами? Существует только один список, который не должен содержать один столбец? Я не вижу необходимости в списке «cellList» и втором цикле. Кажется, что вы должны только петля один раз и просто увеличивать число строк каждый раз. –

+0

Правильно, это всего 1 столбец для вышеуказанного кода (другие столбцы создаются другим списком, но тот отображается правильно). Когда я пытаюсь просто отобразить список «myList», я не могу заставить его отображать фактические элементы внутри, он будет показывать только ссылки HtmlAnchor, такие как (HtmlAnchor: ), только когда я показываю 2-й список (cellList), чтобы я мог видеть правильные данные. – Ian

ответ

0

кажется, что вы должны только цикл один раз и просто увеличиваете номер строки каждый раз. Что-то вроде этого должно работать:

int row = 2; //Should this be 1? 
int col = 2; //Should this be 1? 

foreach (HtmlAnchor item in myList) 
{ 
    string celltext = item.InnerText.ToString(); 

    excelApp.Cells[row, col] = celltext; 

    row++; 
} 
+0

Выше, к сожалению, имеет ту же проблему, он показывает только последний элемент в списке в 1-й строке (строка 2). Это похоже на то, что теперь он идет к следующей строке, когда это нужно. также для вопросов по переменным int. Строка 1 содержит заголовки, а в столбце 1 - другие данные: почему row/col = 2 – Ian

+0

Вы уверены, что вы увеличиваете 'row' каждую итерацию? –

+0

Кроме того, вы уверены, что 'myList' содержит более 1 элемента? –

Смежные вопросы