- PR -

C#におけるスプレッドのセルへのアクセス方法(二次元配列)

1
投稿者投稿内容
ハマリー
常連さん
会議室デビュー日: 2007/10/03
投稿数: 21
投稿日時: 2008-02-08 13:02
現在、VS2008のC#を使用し、Spread2.5(Windows)の使用方法を検討しております。

セルへのアクセス方法で,、以下のように二次元配列として入れることはできるのですが、

Spread.ActiveSheet.Cells[ii, jj].Value =""

二次元配列はパフォーマンスが悪いという欠点があり、配列をやめたいと思っています。

スプレッドのヘルプを見たのですが、見つかりませんでした。どなたかご存じですか?
一郎
ぬし
会議室デビュー日: 2002/10/11
投稿数: 1081
投稿日時: 2008-02-08 13:35
回答ではなく質問なのですが、「二次元配列はパフォーマンスが悪い」というのはどういうことですか?そういう話を聞いたことがないんですが。

それとも、ハマリーさんが二次元配列と二次元配列でないものを実際に比較してみた結果でしょうか。
rain
ぬし
会議室デビュー日: 2006/10/19
投稿数: 549
投稿日時: 2008-02-08 13:42
もしかすると、データバインドを使用した場合と、データバインドを使用せず
セルに1つ1つ値を置いていった場合との差のことを指しているのでしょうか?
じゃんぬねっと
ぬし
会議室デビュー日: 2004/12/22
投稿数: 7811
お住まい・勤務地: 愛知県名古屋市
投稿日時: 2008-02-08 14:23
引用:

ハマリーさんの書き込み (2008-02-08 13:02) より:

二次元配列はパフォーマンスが悪いという欠点があり、配列をやめたいと思っています。


そもそも二次元配列と '何を' 比べてのお話でしょうか? 二次元配列とニ段階配列 (多段階配列) を比べてのお話でしょうか? それともコレクションと比べた場合のお話ですか?

それと確認ですが、'どの場面での' パフォーマンスでしょうか?

引用:

以下のように二次元配列として入れることはできるのですが、

Spread.ActiveSheet.Cells[ii, jj].Value =""


本当にこの場面でのお話でよろしいのでしょうか? だとすると、Cells は二次元配列ではないような気がするので前提から間違っているように思えます。

_________________
C# と VB.NET の入門サイト
じゃんぬねっと日誌
otf
ベテラン
会議室デビュー日: 2006/08/04
投稿数: 91
投稿日時: 2008-02-08 14:50
>Cells

確かに二次元配列と同じようなアクセス方法ですけど
実際はC#のインデクサによってそれっぽくしてあるだけですよ。
つまり内部的には普通にメソッドを呼び出しているのと同じ。
そのインデクサの実装が二次元配列を使っているということはありえますが
そこはユーザーがなんとかできるところでもないでしょう。
じゃんぬねっと
ぬし
会議室デビュー日: 2004/12/22
投稿数: 7811
お住まい・勤務地: 愛知県名古屋市
投稿日時: 2008-02-08 15:00
FarPoint 製品はご無沙汰で自信がなかったので、一応調べてみました。

引用:

FpSpread Class Members からの引用:

ActiveSheet: Gets or sets the active sheet in the component.


ActiveSheet プロパティは FarPoint.Win.Spread.SheetView 型であることがわかります。

引用:

FpSpread Class Members からの引用:

Cells: Gets a Cells object for the cells in the data area of the sheet.


Cells プロパティは FarPoint.Win.Spread.Cells 型であることがわかります。

引用:

Cells Class (FarPoint.Win.Spread) からの引用:

Remarks: This is a collection of Cell objects.


Cells クラスは FarPoint.Win.Spread.Cell クラスのコレクションであり、インデクサがありそうなことがわかります。

結論: Spread.ActiveSheet.Cells[i, j] は引数 2 つを持つインデクサ (プロパティ) アクセサです。 また Cells はコレクション プロパティです。 二次元配列ではありません。

_________________
C# と VB.NET の入門サイト
じゃんぬねっと日誌
ハマリー
常連さん
会議室デビュー日: 2007/10/03
投稿数: 21
投稿日時: 2008-02-08 16:25
返答が遅くなりすいません。

スプレッドと関係ないんですが、

二次元配列[xx,yy]←→配列の配列[xx][yy]

のコードを作成して逆アセンブルすると[xx,yy]のほうがオーバーヘッドが大きいように見えました。

スプレッドは二次元配列に見えるだけで実際は中で違うとは

知りませんでした。たくさんの返信ありがとうございます。
1

スキルアップ/キャリアアップ(JOB@IT)