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 lib всъщност има индексно свойство 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 Columns. Благодаря, че го посочихте. - person Michael; 01.11.2012