C# と VB.NET の質問掲示板

わんくま同盟

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト


(過去ログ 72 を表示中)
■42431 / )  Re[5]: DataGridからエクセル出力でエラー
□投稿者/ ごう (63回)-(2009/10/15(Thu) 17:47:17)
2009/10/15(Thu) 17:47:38 編集(投稿者)
> 'DataArray定義
> Dim DtArCol, DtArRow As Double
> DtArCol = 0
> For Each dtColumn In dt.Columns
>     DtArCol = DtArCol + 1
> Next
> DtArRow = 0
> For Each dtRow In dt.Rows
>     For i = 0 To dt.Columns.Count - 1
>         DtArRow = DtArRow + 1
>     Next
> Next

このループが気になりますね。
仮にですが、500行12列のデータとして考えます。

DtArCol(列数)は12って求められるけど、
DtArRow(行数)は二重ループになってるから、12×500=6000になりますよね。
1行目に列名を入れる行が必要だとしても、500+1=501行でいいのでは?
(配列が12列分用意されていて、その配列一つ一つにデータを区切って代入しているわけですから)

というわけで、Rangeを確保しているこの処理
>Range = Range.resize(DtArRow, DtArCol)
Range = Range.resize(6000, 12) になってしまってます。

DataArrayは501行分, 12列分のデータしか入力してないから、
「宣言はしたけど、値がない」DataArrayが存在するのがもしかして原因の一つかもしれません。


>Excelオブジェクト
了解です!

返信 編集キー/


管理者用

- Child Tree -