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

わんくま同盟

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

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


(過去ログ 53 を表示中)
■29863 / )  Excelの読み込み字に日付がシリアル値で表示されます
□投稿者/ ひより (1回)-(2008/12/16(Tue) 00:36:03)

分類:[C#] 

初心者です。お世話になります。

使用言語はC#です。
やりたいことは、「OleDbを使ってExcelのファイルを読み込み、データセットに格納する」なのですが、
読み込むExcelファイルの中で、セルの形式が日付型のデータが入っていると、しばしばシリアル値に変換されてデータセットに格納されてしまいます。

例)2003/2/25(Excel)→37678(データセットに格納された値)

まったく同じファイルを読み込んでも、そのときによってシリアル値になったりならなかったりと結果はまちまちです。
Excelファイルを読み込むときになんとか日付型のデータをシリアル値に変換せずにデータセットに格納したいのですが、
調べ方が甘いためか、その方法を見つけられませんでした。

お手数おかけしますが、なにとぞご助言をよろしくお願いします。

以下参考にさせて頂いたソースコードです。
(参考サイト様:http://d.hatena.ne.jp/nagakura_eil/20080716/p1)

///////////////////////////////////////////////////////////////////////////////
string conString = String.Format(@"Provider=Microsoft.Jet.OLEDB.4.0;
          Data Source={0};Extended Properties=""Excel 8.0;
          HDR=No;Imex=1"";",path);

OleDbConnection con = new OleDbConnection(conString);
con.Open();
DataTable schemaTable = con.GetOleDbSchemaTable(OleDbSchemaGuid.Tables,null);
con.Close();

DataSet ds = new DataSet();
foreach(DataRow row in schemaTable.Rows) 
{
	string tableName = row["TABLE_NAME"].ToString();
	string sql = String.Format("SELECT * FROM [{0}]",tableName);
	OleDbDataAdapter oda = new OleDbDataAdapter(sql,con);
	DataTable table = new DataTable(tableName);
	oda.Fill(table);
	ds.Tables.Add(table);
}
return ds;
////////////////////////////////////////////////////////////////////////////////////

返信 編集キー/


管理者用

- Child Tree -