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

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

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

Re[8]: Excelのセル値の取得について


(過去ログ 13 を表示中)

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

■4178 / inTopicNo.1)  Excelのセル値の取得について
  
□投稿者/ R (1回)-(2007/06/08(Fri) 17:07:19)

分類:[C# (Windows)] 

 はじめまして。
 C#の初心者ですが、宜しくお願いいたします。

 表題にもあるとおり、C#からExcelのセル値の取得を行いたいと思っているのですが
 デバッグ時にエラーが起こりうまくいきません。
 
取得方法に、GetCellというものも見つけたのですがうまくいきませんでした。
 エラー内容と、試行中のソースを記載します。

 ご教授を宜しくお願いいたします。



 エラー内容は以下になります
  型 'object' を 'string' に暗黙的に変換できません。明示的な変換が存在します。
 (cast が不足していないかどうかを確認してください)


 ソース
string strTitle;
string FilelPath = @"C:\Book1.xls";

Microsoft.Office.Interop.Excel.Application xlsApplication = new Microsoft.Office.Interop.Excel.Application();
Microsoft.Office.Interop.Excel.Workbooks xlsBools = xlsApplication.Workbooks;
xlsBools.Open(excelPath, 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);

Microsoft.Office.Interop.Excel._Workbook book = xlsBools.get_Item(1);
Microsoft.Office.Interop.Excel.Sheets Sheets = book.Worksheets;
Microsoft.Office.Interop.Excel._Worksheet objSheet;

objSheet = (Microsoft.Office.Interop.Excel._Worksheet)Sheets.get_Item(1);

strTitle = objSheet.Cells[1,3];

MessageBox.Show(strTitle);


引用返信 編集キー/
■4179 / inTopicNo.2)  Re[1]: Excelのセル値の取得について
□投稿者/ 未記入 (95回)-(2007/06/08(Fri) 17:13:06)
No4178 (R さん) に返信
>  表題にもあるとおり、C#からExcelのセル値の取得を行いたいと思っているのですが
>  デバッグ時にエラーが起こりうまくいきません。

コンパイルエラーじゃなくて?

> 取得方法に、GetCellというものも見つけたのですがうまくいきませんでした。
>  エラー内容と、試行中のソースを記載します。

GetCellというのは聞いたことがないのでどこかの誰かが作ったものだと思いますが、それはともかくとして。

>  エラー内容は以下になります
>   型 'object' を 'string' に暗黙的に変換できません。明示的な変換が存在します。
>  (cast が不足していないかどうかを確認してください)

どこで起きているかを書きましょう。それとエラー内容からして単にキャストしていないだけということはわかるでしょうか。
引用返信 編集キー/
■4180 / inTopicNo.3)  Re[2]: Excelのセル値の取得について
□投稿者/ R (2回)-(2007/06/08(Fri) 17:48:06)
2007/06/08(Fri) 17:59:57 編集(投稿者)
2007/06/08(Fri) 17:59:45 編集(投稿者)

未記入さん、返信とご指摘をありがとうございます。

エラーの発生箇所は、
  objSheet.Cells[1,3];
になります。

キャストなのですが、試してみたのですがエラーが発生しました。
strTitle = (string)sheet.Cells[1, 3];

エラーは同じ箇所で内容は以下となります。
 型 'System.__ComObject' の COM オブジェクトをクラス型 'System.String' にキャストできません。
 COM コンポーネントを表す型のインターフェイスを COM コンポーネントを表さない型にキャストする
 ことはできません。ただし、基になる COM コンポーネントがインターフェイスの IID の
 QueryInterface 呼び出しをサポートする場合は、インターフェイスにキャストすることができます。

このエラー内容は自分には理解できませんでした。

拙い内容で申し訳ありませんでした。
宜しくお願いいたします。
引用返信 編集キー/
■4181 / inTopicNo.4)  Re[3]: Excelのセル値の取得について
□投稿者/ HiJun (36回)-(2007/06/08(Fri) 18:01:26)
2007/06/08(Fri) 18:04:52 編集(投稿者)

objSheet.Cells[1,3];のところでエラーが発生しているということですが、
Cellsって値を返すのではなく、Rangeオブジェクトを返しているような気が...
(すみません。薄ら覚えです。)

多分
Microsoft.Office.Interop.Excel.Range xlRange = objSheet.Cells[1,3];
strTitle = xlRange.Value

とやればいけると思いますが...
引用返信 編集キー/
■4184 / inTopicNo.5)  Re[4]: Excelのセル値の取得について
□投稿者/ 片桐 (17回)-(2007/06/08(Fri) 19:07:32)
片桐 さんの Web サイト
2007/06/08(Fri) 19:08:01 編集(投稿者)



セルの値(中身)は、Range(Cell)オブジェクトの value プロパティに格納されています
EXCEL-VBAでは、このValueプロパティを省略して使えていましたが、
C#とかだと、省略できないので自分できちんと教えてあげてください。

最初のソースで、

strTitle = (string)sheet.Cells[1, 3];
この後で、StrTitle オブジェクトは Sheetの1行目の3カラム目のセルを指すオブジェクトになっていますから StrTitle.value とやっても取れると思いますですよ。
引用返信 編集キー/
■4186 / inTopicNo.6)  Re[5]: Excelのセル値の取得について
□投稿者/ 未記入 (96回)-(2007/06/08(Fri) 19:21:08)
No4184 (片桐 さん) に返信
> strTitle = (string)sheet.Cells[1, 3];
> この後で、StrTitle オブジェクトは Sheetの1行目の3カラム目のセルを指すオブジェクトになっていますから StrTitle.value とやっても取れると思いますですよ。

これはだめでしょう。string.valueなどというメンバはありません。
Hijunさんの回答で正解です。
引用返信 編集キー/
■4193 / inTopicNo.7)  Re[6]: Excelのセル値の取得について
□投稿者/ 片桐 (18回)-(2007/06/08(Fri) 21:34:43)
片桐 さんの Web サイト
No4186 (未記入 さん) に返信
> ■No4184 (片桐 さん) に返信
>>strTitle = (string)sheet.Cells[1, 3];
>>この後で、StrTitle オブジェクトは Sheetの1行目の3カラム目のセルを指すオブジェクトになっていますから StrTitle.value とやっても取れると思いますですよ。
>
> これはだめでしょう。string.valueなどというメンバはありません。
> Hijunさんの回答で正解です。

あ、そだった、(string)キャストしてるの見逃してました。すみません。

なので、
strTitle = sheet.Cells[1, 3];
としていた場合、StrTitleオブジェクトはセルを指すオブジェクトになっている、ってことですね

すみませんです。
引用返信 編集キー/
■4262 / inTopicNo.8)  Re[7]: Excelのセル値の取得について
□投稿者/ R (3回)-(2007/06/12(Tue) 09:46:32)
No4193 (HiJun さん) に返信
No4193 (片桐 さん) に返信
No4186 (未記入 さん) に返信

皆さんありがとうございました。返信が遅れて申し訳ありません。
HiJunさんの方法で解決できました。嬉しい限りです。

先日まで、EXCEL-VBAを使用していたので片桐さんの仰る通り
セルの値に関して勉強不足でした。
まだまだ勉強しなければいけないと思いましたが、これからも
宜しくお願いいたします。

解決済み
引用返信 編集キー/
■4263 / inTopicNo.9)  Re[8]: Excelのセル値の取得について
□投稿者/ 未記入 (99回)-(2007/06/12(Tue) 09:49:59)
No4262 (R さん) に返信
> 先日まで、EXCEL-VBAを使用していたので片桐さんの仰る通りセルの値に関して勉強不足でした。

本質的な問題はあなたが

・デフォルトプロパティを理解していないこと
・メソッドの戻り値またはメンバの戻り値の型を意識していないこと

にあると思います。これを意識しないかぎり別のところでまったく同じミスをおかしてしまうでしょう。
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -