- - PR -
セル指定し中に入ってるデータを抽出する方法。
投稿者 | 投稿内容 | ||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2007-06-06 12:05
[quote]
その先輩の仰るとおり、「式ウォッチ」 などで Excel.Range オブジェクトの中身をご覧になればおわかりになるのではないかと思います。Excel.Range は、その名前どおりセルの Range であって、セルの中身そのものを表すわけではありません。 [/quote] 「式ウォッチ」で参照したところ、上記でも書いた[System.__Comobject]がでてきました。じゃんぬ氏と同じことをいいますがRangeの中を表してるんじゃなくRange自体を表してるんですよね。なので、それを表した上でさらに細かく何かをやると値をとれるってことですよね。 | ||||||||||||
|
投稿日時: 2007-06-06 12:16
やはり私とで認識の違いがあっただけのようですね。 変数の箱は Excel.Range として参照していますか? object ではメンバがわかるはずもないので、Excel.Range 型にキャストしなければなりません。 _________________ C# と VB.NET の入門サイト じゃんぬねっと日誌 | ||||||||||||
|
投稿日時: 2007-06-06 12:27
string Name = openFileDialog1.FileName; string n = Path.GetFullPath(Name); string nn = Path.GetFileName(n); Excel.Application exapp = new Excel.Application(); Excel.Workbooks ks = exapp.Workbooks; Excel.Workbook kd = ks.Open(n,Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing); Excel.Sheets ss = kd.Worksheets; Excel.Worksheet st = (Excel.Worksheet)ss[1]; Excel.Range ge = st.Cells; Excel.Range GEGE; GEGE = ge.get_Range("A11", Type.Missing); textBox1.Text = GEGE.Value2.ToString(); ks.Close(); exapp.Quit(); try~catchは抜きでこのようなコードを書いてみました。 [quote] じゃんぬねっとさんの書き込み (2007-06-06 12:16) より: 変数の箱は Excel.Range として参照していますか? object ではメンバがわかるはずもないので、Excel.Range 型にキャストしなければなりません。 [/quote] 本当に、ありがとうございます。 認識が違いますね。変数が型対応してないからobject型をExcel.Range型の変数にしろってことですね。 | ||||||||||||
|
投稿日時: 2007-06-06 12:33
あら、できているじゃないですか。ついでに Value プロパティと Value2 プロパティの違いについても調べておくと良いと思います。
.NET CLR 言語の多くは型を強く意識した言語が多いです。特に C# は厳密な類に入ると思います。今回に限らず型を厳密に指定した変数の箱を使うことをお勧めします。ポリモーフィズムなどの概念は確かに大切ですが、無闇に使うべきものではないと考えます。 _________________ C# と VB.NET の入門サイト じゃんぬねっと日誌 | ||||||||||||
|
投稿日時: 2007-06-06 12:39
出来ているとのことですがコンパイルが通らないんですよね。 「オブジェクト参照がオブジェクト インスタンスに設定されていません。」 オブジェクトnullじゃないですし、、、データを抽出のにこんな手間がかかるとは。 | ||||||||||||
|
投稿日時: 2007-06-06 12:57
余談ですがデータを抽出じゃなくDBからエクセルにデータを挿入するサンプルが多くみられたような気がします。エクセルからインポートするサンプルは私が調べた限りではありませんでした。探す能力、もしくは、C#の理解力が乏しいだけかもしれませんが。
| ||||||||||||
|
投稿日時: 2007-06-06 13:09
メッセージからすると、NullReferenceException が発生しているようですが、本当にコンパイル (ビルド) 時の出来事でしょうか? 'どこで' 発生していますか? _________________ C# と VB.NET の入門サイト じゃんぬねっと日誌 | ||||||||||||
|
投稿日時: 2007-06-06 13:59
申し訳ありません。デバックも通りましたがやはりまだ値は出力されませんね。 System.Object[,]に変わりましたが。ああ、なんでだろう。。。 |