System.IndexOutOfRangeException:"无法找到列 X."

其他环境
¥50.00

今天使用NPOI把Excel中的数据导入到数据库时碰到一个奇怪的问题,Excel里面命名只有8列数据,程序总是识别成有9列数据,导致 ws.Dimension.End.Column取值一致是10。这样程序视图读取最后一列不存在的列的数据时就抛出了异常:System.IndexOutOfRangeException:"无法找到列 9."。感觉应该是excel模板的问题,把第八列之后的所有列都选中删除,仍然报错,没办法,求助大家!!!

 public static DataTable Read2007(Stream inputStream)
        {
            DataTable table = new DataTable();

            ExcelPackage pck = new ExcelPackage(inputStream);
            ExcelWorksheet ws = pck.Workbook.Worksheets[1];
            int rowNum = ws.Dimension.End.Row;
            int colNum = ws.Dimension.End.Column;

            for (int i = 1; i <= rowNum; i++)
            {
                DataRow dataRow = table.NewRow();
                for (int j = 1; j <= colNum; j++)
                {
                    if (i == 1)
                    {
                        if (ws.Cells[i, j].Value != null)
                        {
                            DataColumn column = new DataColumn(ws.Cells[i, j].Value.ToString());
                            table.Columns.Add(column);
                        }
                    }
                    else
                    {
                        //抛出异常:System.IndexOutOfRangeException:"无法找到列 X."
                        dataRow[j - 1] = ws.Cells[i, j].Value != null ? ws.Cells[i, j].Value.ToString() : null;

                    }
               &nbsp

最佳答案

原因分析

excel表格中是否使用了某些内置函数,比如VLOOKUP。有时候会因为使用了这些函数导致NPOI读取excel时会多识别出一列

检查excel相应的sheet中是否使用了某些excel内置函数,如果使用了就取消掉

hierror T4 被采纳率73%
2020-12-15 18:27
打赏 0 0
页面统计
330 访问
0 帮助
0.00 打赏

hierror 2019 © hierror.com 京ICP备13026190号-1

通知消息
  • 暂无任何消息