- ベストアンサー
ASP.netで、エクセルデータの取り込み・・・。(初心者)
ASP.netで、エクセルデータの取り込みました。 (言語はC#かVB) 手順としては、 (1)取り込むエクセルブックのスキーマ情報を得る。 (2)スキーマ情報からシート名を取得 (3)シート名から、そのシートの情報(セルの値)を、.netのコントロール「データグリッド」に表示 ・・・という手順で、うまくいった!と思ったのですが・・・。エクセルのセルの型が「標準」か「文字列」以外のセルの値(数値とか日付型)の部分だけがすっぽり抜けてしまいます。 数値型や日付型のエクセルのセルの値情報を取得するのは無理なのでしょうか?どなたか教えてください。
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
>ASP.netで、エクセルデータの取り込みました。 どのような方法で?
お礼
todo36さん。 何とか取得できました。 ありがとうございました。
補足
todo36さんお返事ありがとうございます! 一番肝心な説明が無かったですね(^^;) 以下のロジックはC#ですが、VB.netでも同じ結果でした。 private void Page_Load(objectsender,System.EventArgs e) { string sConnStr= "(コネクションストリング)"; Source=D:DATA.xls;Extended Properties=Excel8.0;"; OleDbConnection objConn = new OleDbConnection(sConnStr); objConn.Open(); //スキーマ情報をデータテーブルに格納する DataTable tbl = new DataTable(); tbl = objConn.GetOleDbSchemaTable(OleDbSchemaGuid.Tables_Info,new Object[] {null,null,null,"TABLE"}); DataGrid1.DataSource = tbl; DataGrid1.DataBind(); //データテーブルからシート名(テーブル名)を取り出す name = tbl.Rows[0]["TABLE_NAME"].ToString(); objConn.Close(); //ワークシートからデータを表示する OleDbCommand cmdSelect = new OleDbCommand("select * from [" + name + "]",objConn); OleDbDataAdapter ad = new OleDbDataAdapter(); ad.SelectCommand = cmdSelect; DataSet ds = new DataSet(); ad.Fill(ds,"XLData"); DataGrid2.DataSource = ds.Tables["XLData"].DefaultView; DataGrid2.DataBind(); objConn.Close(); } *この時、グリッド1には「スキーマ情報」が、 グリッド2には、テーブルの情報(シートの情報)が表示されるのですが、エクセルのシート上で、セルの書式が「標準・文字列」以外のものは、null値が入って消えてしまいます。