0

ユーザーがExcel(2007以降)ファイルをアップロードし、このファイルが解析され、コンテンツがデータベースに保存されるアプリケーションがあります。EPPlusを使用してExcelからコンテンツを読んでいます。これがコードスニペットです

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があり、これは2番目の引数として列のインデックスを受け入れます。

4

1 に答える 1

1

例外は「newRow[j-1]」ではなく「worksheet.Cells[i、j] .Value」からのものですか?ループカウンター「j」は11ですが、例外は「列10が見つかりません」を示しています。これはnewRowの「[j-1]」インデクサーと一致します。

于 2012-10-31T15:38:10.487 に答える