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

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

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

Re[10]: Excel セルより読込


(過去ログ 16 を表示中)

[トピック内 31 記事 (1 - 20 表示)]  << 0 | 1 >>

■6004 / inTopicNo.1)  Excel セルより読込
  
□投稿者/ C#初心者 (11回)-(2007/07/29(Sun) 06:52:33)

分類:[C#] 

C#の初心者です。

エクセルのセルにデータを送るのはわかりました。
oSheet.Cells[1, 1] = str;
逆はどうしたらいいのでしょうか?
str = oSheet.Cells[1, 1].ToString();
?????
うまくいきません。

誰か助けてください。
よろしくお願いします。

引用返信 編集キー/
■6005 / inTopicNo.2)  Re[1]: Excel セルより読込
□投稿者/ IIJIMAS (10回)-(2007/07/29(Sun) 11:30:09)
No6004 (C#初心者 さん) に返信
> C#の初心者です。
>
> エクセルのセルにデータを送るのはわかりました。
> oSheet.Cells[1, 1] = str;
> 逆はどうしたらいいのでしょうか?
> str = oSheet.Cells[1, 1].ToString();
> ?????
> うまくいきません。
>
> 誰か助けてください。
> よろしくお願いします。
>

Range メンバ
http://msdn2.microsoft.com/ja-jp/library/microsoft.office.interop.excel.range_members(VS.80).aspx

ValueかValue2が必要なのではなかったでしょうか。
引用返信 編集キー/
■6007 / inTopicNo.3)  Re[2]: Excel セルより読込
□投稿者/ C#初心者 (12回)-(2007/07/29(Sun) 19:04:14)
No6005 (IIJIMAS さん) に返信
ご回答、ありがとうございます。
なにぶん初心者なものでRangeメンバのことがよくわかっていません。
もう少し教えてください。
Microsoft.Office.Interop.Excel のことがよくわかっていません。
Excel2007をインストールしているパソコンでMicrosoft.Excel 12.0 Object Library を参照追加すると
using Excel = Micorsoft.Office.のうしろにInteropとCoreが出てきます。
using Excel = Micorsoft.Office.Interop.Excel;
と書くと正常に認識します。
しかし、Excel2003をインストールしているパソコンでMicrosoft.Excel 11.0 Object Library を参照追加すると
using Excel = Micorsoft.Office.のうしろにCoreだけしか出てきません。
当然、
using Excel = Micorsoft.Office.Interop.Excel;
と書くと、エラーになります。
Excel2003の場合には、この行を省略しても、セルにデータを書き込めます。
しかし、セルのデータを読み込めません。
Interopについて教えてもらえませんか?
お手数をおかけします。

引用返信 編集キー/
■6008 / inTopicNo.4)  Re[2]: Excel セルより読込
□投稿者/ 片桐 (34回)-(2007/07/29(Sun) 19:07:25)
片桐 さんの Web サイト
IIJIMASさんのリンク先の記事(rangeオブジェクトのメンバー)のとおりかと。

oSheet.Cells[1, 1] = str;

実は、これは、
oSheet.Cells[1,1].value = str;
と書くべきところを「コンパイルエラーにならない」「実際に動いてしまう」ことから、「.value」の存在を忘れてしまって起きてしまってることですね。

過去ログ13の記事No.4178 あたりがそのお話です。

引用返信 編集キー/
■6009 / inTopicNo.5)  Re[3]: Excel セルより読込
□投稿者/ HiJun (58回)-(2007/07/29(Sun) 20:27:49)
前にも同じ質問があった気がする...

値の参照や取得は、IIJIMASさんや片桐さんのおっしゃる通りで、
Valueを使用するべきです。
oSheet.Cells[1, 1]の値は、Cellオブジェクトですので...

引用返信 編集キー/
■6019 / inTopicNo.6)  Re[4]: Excel セルより読込
□投稿者/ C#初心者 (13回)-(2007/07/30(Mon) 09:31:12)
No6009 (HiJun さん) に返信
いろいろなアドバイス、ありがとうございます。
Valueのことはぼんやりと理解していたのですが、
using Excel = Micorsoft.Office.Interop.Excel;
と書くとエラーになるため、
Valueも書けませんでした。
Microsoft.Excel 11.0 Object Library を参照しています。
こういった現象は私のパソコンだけなのでしょうか?
Microsoft.Excel 12.0 Object Library だと正常に動きます。
何が足りないのでしょうか?

引用返信 編集キー/
■6021 / inTopicNo.7)  Re[5]: Excel セルより読込
□投稿者/ 特攻隊長まるるう (71回)-(2007/07/30(Mon) 12:48:16)
No6019 (C#初心者 さん) に返信
ラッパークラスの違い。。。という説明で分かるかなぁ?
http://fukkey.dyndns.org/pins/vb/041031/55266.html
簡単に言えば Excel のバージョンの違いによるものです。

[Word や Excel などの Office 製品の制御]
http://www.microsoft.com/japan/msdn/vbasic/migration/tips/office.aspx
[Office 2003 プライマリ相互運用機能アセンブリをインストールして使用する]
http://www.microsoft.com/japan/msdn/office/office2003/OfficePrimaryInteropAssembliesFAQ.aspx

引用返信 編集キー/
■6022 / inTopicNo.8)  Re[5]: Excel セルより読込
□投稿者/ HiJun (59回)-(2007/07/30(Mon) 12:53:26)
そもそも、参照しているバージョンが違うので
操作も異なるのではないかと思います。

using Excelを使用するのをやめてみてはいかがですか?
参照設定でExcel Libraryを追加して
ソースの中でNameSpace付で書くような感じでしょうか。

引用返信 編集キー/
■6025 / inTopicNo.9)  Re[6]: Excel セルより読込
□投稿者/ C#初心者 (14回)-(2007/07/30(Mon) 15:16:58)
No6021 (特攻隊長まるるう さん) に返信
いろいろなご回答、ありがとうございました。
HiJunさんのアドバイスは、私には難しすぎるようです。
特攻隊長まるるうさんのアドバイスで解決しました。
PIAがインストールできていなかったようです。
OfficeXPでは別途インストールしなければならないように理解していたのですが、
Excel2003では自動でインストールされるみたいな勘違いをしていました。
指示するか完全にインストールしなければならなかったようです。
using Excel = Microsoft.Office.Interop.Excel;
でのエラーは無くなりました。

しかし、片桐さんのアドバイスのように、
oSheet.Cells[1,1].value = str;
とすると、
objectにValueの定義がありません。
とエラーになります。
Valueの必要性は理解したつもりなんですが…。

using System.Reflection;
using Excel = Microsoft.Office.Interop.Excel;
|
|
|
string strFileName = System.Windows.Forms.Application.StartupPath + @"\サンプル.xls";

Excel.Application oXL;
Excel._Workbook oWB;
Excel._Worksheet oSheet;

oXL = new Excel.Application();
oXL.Visible = true;

oWB =
oXL.Workbooks.Open(strFileName,
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);

oSheet = (Excel._Worksheet)oWB.ActiveSheet;
oSheet.Cells[1, 1].Value = "test";

再下行でValueがエラーになります。
何が足りないのでしょうか?
アドバイス、お願いします。


引用返信 編集キー/
■6029 / inTopicNo.10)  Re[7]: Excel セルより読込
□投稿者/ IIJIMAS (11回)-(2007/07/30(Mon) 16:15:27)
No6025 (C#初心者 さん) に返信
> ■No6021 (特攻隊長まるるう さん) に返信
> いろいろなご回答、ありがとうございました。
> HiJunさんのアドバイスは、私には難しすぎるようです。
> 特攻隊長まるるうさんのアドバイスで解決しました。
> PIAがインストールできていなかったようです。
> OfficeXPでは別途インストールしなければならないように理解していたのですが、
> Excel2003では自動でインストールされるみたいな勘違いをしていました。
> 指示するか完全にインストールしなければならなかったようです。
> using Excel = Microsoft.Office.Interop.Excel;
> でのエラーは無くなりました。
>
> しかし、片桐さんのアドバイスのように、
> oSheet.Cells[1,1].value = str;
> とすると、
> objectにValueの定義がありません。
> とエラーになります。
> Valueの必要性は理解したつもりなんですが…。
>
> using System.Reflection;
> using Excel = Microsoft.Office.Interop.Excel;
> |
> |
> |
> string strFileName = System.Windows.Forms.Application.StartupPath + @"\サンプル.xls";
>
> Excel.Application oXL;
> Excel._Workbook oWB;
> Excel._Worksheet oSheet;
>
> oXL = new Excel.Application();
> oXL.Visible = true;
>
> oWB =
> oXL.Workbooks.Open(strFileName,
> 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);
>
> oSheet = (Excel._Worksheet)oWB.ActiveSheet;
> oSheet.Cells[1, 1].Value = "test";
>
> 再下行でValueがエラーになります。
> 何が足りないのでしょうか?
> アドバイス、お願いします。
>

各オブジェクトを1行ずつ適切に
Excel.Workbookインターフェース
Excel.Worksheetインターフェース
Excel.Rangeインターフェース
にキャストしてみてはどうでしょうか。
ピリオドを打つことでIntelliSenseによってメンバがでませんか。
引用返信 編集キー/
■6031 / inTopicNo.11)  Re[8]: Excel セルより読込
□投稿者/ C#初心者 (15回)-(2007/07/30(Mon) 16:39:13)
No6029 (IIJIMAS さん) に返信
> ピリオドを打つことでIntelliSenseによってメンバがでませんか。

メンバが出なくて悩んでいるのです。
何が悪いのでしょう?

引用返信 編集キー/
■6033 / inTopicNo.12)  Re[9]: Excel セルより読込
□投稿者/ C#初心者 (16回)-(2007/07/30(Mon) 16:40:29)
No6031 (C#初心者 さん) に返信
> ■No6029 (IIJIMAS さん) に返信
>>ピリオドを打つことでIntelliSenseによってメンバがでませんか。
>
> メンバが出なくて悩んでいるのです。
> 何が悪いのでしょう?
>
引用返信 編集キー/
■6044 / inTopicNo.13)  Re[10]: Excel セルより読込
□投稿者/ C#初心者 (17回)-(2007/07/30(Mon) 17:45:49)
No6033 (C#初心者 さん) に返信
マイクロソフトのページでは、
oSheet.Cells[1, 1] = "First Name";
と書いてあります。
Valueは不要なのでは?

引用返信 編集キー/
■6045 / inTopicNo.14)  Re[11]: Excel セルより読込
□投稿者/ 特攻隊長まるるう (73回)-(2007/07/30(Mon) 17:57:18)
No6044 (C#初心者 さん) に返信
それは
>過去ログ13の記事No.4178
を読んだ上での発言ですか?

 # ページ上部の[記事検索]メニューを選択し、
 # [検索範囲]を(過去ログ13)
 # [キーワード]を4178
 # にして検索してください。

引用返信 編集キー/
■6047 / inTopicNo.15)  Re[12]: Excel セルより読込
□投稿者/ C#初心者 (18回)-(2007/07/30(Mon) 19:04:53)
No6045 (特攻隊長まるるう さん) に返信
> ■No6044 (C#初心者 さん) に返信
> それは
> >過去ログ13の記事No.4178
> を読んだ上での発言ですか?

もちろん読んでいます。
Valueの必要性もわかっています。
しかし、私のパソコンではValueを入れるとエラーになり、
Valueを無くすると正常なのです。
そこで悩んでいるのです。
もっとほかのところに原因があり、私のパソコン固有の症状なのかと悩んでいます。
No6026で、再下行のValueを外すと正常に動きます。
なぜなのでしょうか?

引用返信 編集キー/
■6048 / inTopicNo.16)  Re[13]: Excel セルより読込
□投稿者/ 片桐 (36回)-(2007/07/30(Mon) 19:08:58)
単純に考えた事。

cells[1,1]のオブジェクト型は何になってますか?

Valueのプロパティをバインドできない型になっているのでは?
つまり、RangeオブジェクトやCellオブジェクトを継承してないただのオブジェクト型になっている……ということが考えられないかナァ、と。tostringとか動いたりして<おい

Intellicenseが使えているなら、そのオブジェクトの型も判るはず。

動けばいいじゃん、というなら、そこまでですけれど……
引用返信 編集キー/
■6049 / inTopicNo.17)  Re[14]: Excel セルより読込
□投稿者/ 特攻隊長まるるう (75回)-(2007/07/30(Mon) 19:28:29)
単純に考えた事。

キャスト(型変換)した後のコードを書いておいてもらえます?念のため。
引用返信 編集キー/
■6053 / inTopicNo.18)  Re[15]: Excel セルより読込
□投稿者/ C#初心者 (19回)-(2007/07/30(Mon) 22:31:04)
No6049 (特攻隊長まるるう さん) に返信
> 単純に考えた事。
>
> キャスト(型変換)した後のコードを書いておいてもらえます?念のため。

片桐さん、特攻隊長まるるうさん
申し訳ありませんが、初心者のため、理解できない言葉がたくさんあります。
片桐さんの
Valueのプロパティをバインドできない型になっているのでは?
というのが当たっているような気がしますが、詳しくはわかりません。

簡単なtestprogramを書きます。

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Reflection;
using Excel = Microsoft.Office.Interop.Excel;

namespace testprogram
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}

private void Form1_Load(object sender, EventArgs e)
{
string strFileName = System.Windows.Forms.Application.StartupPath + @"\サンプル.xls";

Excel.Application oXL;
Excel._Workbook oWB;
Excel._Worksheet oSheet;

oXL = new Excel.Application();
oXL.Visible = true;

oWB =
oXL.Workbooks.Open(strFileName,
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);

oSheet = (Excel._Worksheet)oWB.ActiveSheet;
oSheet.Cells[1, 1] = "test";

//oWB.Close(false, Type.Missing, Type.Missing);
//oXL.Quit();
//System.Runtime.InteropServices.Marshal.ReleaseComObject(oXL);
//oXL = null;
}
}
}

Valueが無ければ正常に動くのです。
oSheet.Cells[1, 1].Value = "test";
とするとエラーになります。

上記プログラムで、キャスト(型変換)ってどうするのですか?
オブジェクト型ってどうやって調べるのですか?
初歩的な質問ですみません。

引用返信 編集キー/
■6056 / inTopicNo.19)  Re[16]: Excel セルより読込
□投稿者/ mあ (33回)-(2007/07/31(Tue) 02:36:43)
No6053 (C#初心者 さん) に返信
● oSheet = (Excel._Worksheet)oWB.ActiveSheet;
● oSheet.Cells[1, 1] = "test";

●のとこにブレークポイント(以下BP)置いて、ステップ実行。
最初のBPに止まったら、oWB をウォッチで確認。
次のステップに進んで、次のBPで、oSheet を確認。

oSheet.Rows(1).Cells(1) とか、書けないのだろうか??
普通に書くと、普通に悩まなくて済むはずなんだけどな。

>
> Valueが無ければ正常に動くのです。
> oSheet.Cells[1, 1].Value = "test";
> とするとエラーになります。
>
> 上記プログラムで、キャスト(型変換)ってどうするのですか?

初心者だからって文法分からないはまずいでしょう?
キャストって何ですか?って鸚鵡返しする前に調べなくちゃ。

VB6 でもあったけど、
レコードセットのなんたらで、
oraSet!COL1
とか書くとインテリ出ないけど、
oraSet.Item("COL1").Value とか
書くと普通にインテリ出てたよね。
Cells[]って古い書き方なんじゃ?


> オブジェクト型ってどうやって調べるのですか?
デバッガでステップ実行すれば、ウォッチ窓で確認できるでしょう?

> 初歩的な質問ですみません。
>

作った奴に聞くのが一番なんじゃ?>作った本人が一番の理解者です。
あなたの周りに聞ける奴はいないのでしょうか?
もしかして、どこからかコピペしてきたソースを元に改造してる?

引用返信 編集キー/
■6059 / inTopicNo.20)  Re[17]: Excel セルより読込
 
□投稿者/ C#初心者 (20回)-(2007/07/31(Tue) 10:31:19)
No6056 (mあ さん) に返信

> ●のとこにブレークポイント(以下BP)置いて、ステップ実行。
> 最初のBPに止まったら、oWB をウォッチで確認。
> 次のステップに進んで、次のBPで、oSheet を確認。
型の見方はわかりました。
ありがとうございます。

> Cells[]って古い書き方なんじゃ?
いつも使っていますが、古い書き方なんですか?
新しい書き方って?

> oSheet.Rows(1).Cells(1) とか、書けないのだろうか??
> 普通に書くと、普通に悩まなくて済むはずなんだけどな。
oSheet.Rows(1).Cells(1)が新しい書き方なんでしょうか?
エラーが出て動きません。
私のパソコンだけ?

> 作った奴に聞くのが一番なんじゃ?>作った本人が一番の理解者です。
> あなたの周りに聞ける奴はいないのでしょうか?
> もしかして、どこからかコピペしてきたソースを元に改造してる?
作った奴は自分なので聞けません。
近くに聞ける奴がいたらここに来ていません。
実際のソースは長くてここに書けないため、エラーの出る部分だけを
テストプログラムとして記述しました。

> 初心者だからって文法分からないはまずいでしょう?
初心者なりの一通りの文法はわかっているつもりです。
特攻隊長まるるうさんの
「キャスト(型変換)した後のコードを書いておいてもらえます?」
の表現が理解できませんでした。
そんなコードが無いから…。
だから簡単なソースを書きました。
私のパソコンでは、上記プログラムはValueでエラーになります。

とりあえず、Valueをつけないこととしました。
納得はしていませんが、プログラムを動かすことを優先します。


引用返信 編集キー/

次の20件>
トピック内ページ移動 / << 0 | 1 >>

管理者用

- Child Tree -