プロが教える店舗&オフィスのセキュリティ対策術

ASP.netで、エクセルデータの取り込みました。
(言語はC#かVB)
手順としては、
(1)取り込むエクセルブックのスキーマ情報を得る。
(2)スキーマ情報からシート名を取得
(3)シート名から、そのシートの情報(セルの値)を、.netのコントロール「データグリッド」に表示
・・・という手順で、うまくいった!と思ったのですが・・・。エクセルのセルの型が「標準」か「文字列」以外のセルの値(数値とか日付型)の部分だけがすっぽり抜けてしまいます。
数値型や日付型のエクセルのセルの値情報を取得するのは無理なのでしょうか?どなたか教えてください。

A 回答 (1件)

>ASP.netで、エクセルデータの取り込みました。



どのような方法で?

この回答への補足

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値が入って消えてしまいます。

補足日時:2004/09/17 11:32
    • good
    • 0
この回答へのお礼

todo36さん。
何とか取得できました。
ありがとうございました。

お礼日時:2004/09/17 17:54

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!