Я использую здесь принятое решение для преобразования Excel в таблицу данных. Это отлично работает, если у меня есть «идеальные» данные, но если в середине моих данных есть пустая ячейка, кажется, что в каждый столбец помещены неправильные данные.
Я думаю, это потому, что в приведенном ниже коде:
row.Descendants().Count()
|
- это количество заполненных ячеек (не все столбцы) И:
GetCellValue(spreadSheetDocument, row.Descendants().ElementAt(i));
|
, похоже, находит следующую заполненную ячейку (не обязательно то, что находится в этом индексе), поэтому, если первый столбец пуст и я вызываю ElementAt (0), он возвращает значение во втором столбце.
Вот полный код синтаксического анализа.
DataRow tempRow = dt.NewRow();
for (int i = 0; i < row.Descendants().Count(); i++)
{
tempRow[i] = GetCellValue(spreadSheetDocument, row.Descendants().ElementAt(i));
if (tempRow[i].ToString().IndexOf("Latency issues in") > -1)
{
Console.Write(tempRow[i].ToString());
}
}
| |