|
分類:[C#]
はじめまして。 本当にド素人な質問をさせてください。
win7(64bit)、Microsoft Visual C# 2010 Expressを使用してExcel2010のシートの内容を参照しようとしているのですが・・・
1)やりたいこと 指定したシート内のセルの内容を、列(具体的にはC列)の内容を行毎に参照したい。
2)やったこと−1 ファイルをOPENし、指定したシートの、指定したセルの内容を参照
==以下、シート指定をした後の処理== int y = 1; string strval, cval = "";
Microsoft.Office.Interop.Excel.Range xlRange = oSheet.Cells[y, 3]; cval = xlRange.Value; strval = cval + "\n"; textBox3.Text = strval; System.Runtime.InteropServices.Marshal.ReleaseComObject(xlRange); y=y+1; ==ここまで== で行うと、C1の内容をtextBox3に表示できたので、、、
2)やったこと−2 C列の全行内容を取得しようと思い ==以下、やってみた処理== int krow; int y = 1; string strval, cval = ""; krow = oSheet.UsedRange.Rows.Count;
for(inti=1;i<krow;i++) { Microsoft.Office.Interop.Excel.Range xlRange = oSheet.Cells[y, 3]; cval = xlRange.Value; if(cval!=null) { strval=cval+"\n"; System.Runtime.InteropServices.Marshal.ReleaseComObject(xlRange); } y=y+1; } ==ここまで== と、シートで使用している最大行数分を参照しようとすると cval = xlRange.Value; で 「RuntimeBinderExceptionはハンドルせれませんでした」 「型'double'を'string'に暗黙的に変換できません」 とエラーになります。
ローカル変数を見ると、 strvalには、C1の内容が入ってました。
2)やったこと−3 →2)やったこと−1 の内容を2度繰り返したら、 Microsoft.Office.Interop.Excel.Range xlRange = oSheet.Cells[y, 3]; の「xlRange」で、かぶりエラーとなりました。
3)対処について教えてください このような場合、気にせず Microsoft.Office.Interop.Excel.Range xlRange1 = oSheet.Cells[1, 3]; Microsoft.Office.Interop.Excel.Range xlRange2 = oSheet.Cells[2, 3]; Microsoft.Office.Interop.Excel.Range xlRange3 = oSheet.Cells[3, 3]; Microsoft.Office.Interop.Excel.Range xlRange4 = oSheet.Cells[4, 3]; ・ ・ ・ と想定される分を指定して、forでループ処理を行数分した方がよいのか 根本的に他の方法で、対処できるものなのでしょうか?
お手間おかけますが、どなたかよろしくお願い致します。
|