EPPlus - не удается найти столбец 10

У меня есть приложение, в котором пользователь загружает файл excel (2007 или выше), этот файл анализируется, а содержимое сохраняется в базе данных. Я читаю содержимое из Excel с помощью EPPlus. Вот фрагмент кода

foreach (var worksheet in package.Workbook.Worksheets)
                        {
                            for (int i = worksheet.Dimension.Start.Row + 1; i <= worksheet.Dimension.End.Row; i++)
                            {
                                DataRow newRow = dt.NewRow();

                                for (int j = worksheet.Dimension.Start.Column; j <= worksheet.Dimension.End.Column; j++)
                                {
                                    newRow[j - 1] = worksheet.Cells[i, j].Value;
                                }

                                dt.Rows.Add(newRow);
                            }
                        }

Когда значение j достигает 11, я получаю следующее исключение: Не удается найти столбец 10. Но я проверил файл, на самом деле он имеет индекс столбца 10. Я поставил точку останова, посмотрел значение столбца 9, и оно точно такое же значение перед столбцом 10.

Так кто-нибудь может мне помочь? В чем проблема на самом деле?

Я проверил API, в библиотеке EPPlus действительно есть свойство индекса Cells, которое принимает в качестве второго аргумента индекс столбца.


person Michael    schedule 29.10.2012    source источник


Ответы (1)


Вы уверены, что исключение связано с "worksheet.Cells[i, j].Value", а не с "newRow[j - 1]"? Ваш счетчик циклов «j» равен 11, но исключение указывает «Не удается найти столбец 10», который соответствует индексатору «[j-1]» в вашем newRow.

person John Hurrell    schedule 31.10.2012
comment
Да, вы правы, у меня не было соответствующего количества столбцов в моей коллекции столбцов DataTable. Спасибо что подметил это. - person Michael; 01.11.2012