環境はVB.NETです。
例えばEXCEL内の「A4:D20」だけDATASETに格納して
DATAGRIDで表示すると言う事をやりたいのですが
「A1:D3」には色々な情報が記入されていると言う
EXCELファイルの場合で、ADOでのデータの取得はできますか?
色々なサンプルを見る限りでは、EXCELがきれいな表形式でないと
ADOでは取得出来なさそうです。。。
Jet Providerでアクセスするなら、シートを指定して読み込むのではなく、
セル範囲を指定して読み込めば、取得できる可能性があります。
ただし、レジストリ設定如何では、データ型の判定が揺れる事があります。
セル情報をデータとしてではなく、フィールド名として読み込む方式を
用いれば、データ型の揺れにも対応できますが、それだと効率が悪いので、
いっそ、Excelをオートメーションで読み込んだ方が良いかも知れません。
色々調べて見ましたが、オートメーションで読込むしかないようでした。
(技術的にも分かりやすかったですし。。)
ただ、一点分からない事があります。
セルから値を取得する際にセルの中身が空の場合以下の取得方法では
エラーが出てしまいます。(DBNULLを使えと言う内容です)
a.text= CType(xlSheet.Cells(2, 3), Excel.Range).Value.ToString()
b.text= CType(xlSheet.Cells(2, 3), Excel.Range).Value.ToString()
c.text= CType(xlSheet.Cells(2, 3), Excel.Range).Value.ToString()
・
・
・
・
Try・Catchで拾ってしまうのが一番簡単なのかもしれませんが
上記のようなコードがあえて沢山必要なのです。
どのように対処すれば良いでしょうか?
ToString をやめてDBNULLを使う自作関数作れば?
ToStringを理解していなかったようです。
もう1つ質問させてください。
EXCELからデータを取得する際は、みなさんどのように型指定
して取得していますか?
あるセルには時間が入力されています。
取得すると「9:00」と入力されている内容が「0.375」と
取得されてしまいます。
EXCELの書式設定を全て文字列にしてしまえば良いのでしょうが、
そうではなくどのような型にも対応できるように、VB.NET側で対応
したいのです。
どうぞよろしくお願いいたします。
すみません。
質問内容がおかしいですね。
EXCELから取得したデータの型を画面上のテキストボックス
(編集可にしたい)に表示をしたいのですが、STRING型に変換
しないと表示できませんよね。
String型に変換をしてしまうとあるセルの内容がおかしくなってしまいます。
「9:00」 → 「0.375」
これをそのまま(9:00)表示するにはどうすれば良いでしょうか?
Value やめて Text 使えば?
できました!!!
感謝感謝です。
ありがとうございました。
ツイート | ![]() |