感想は、普通のADOと比べて面倒くさい、というか、作ったやつは死ねって感じかな、、、
簡単なことを複雑に実装する天才かもしれぬ。
//箱根の皆さん OLEDBですよ
using System.Data.OleDb;
//ADO.NET版
//Hashtable[ArrayList(ArrayList)]って構造で返ってくる(w
//Hashtable[表の名前][行][列] という構成かな、、、
//極悪だな。
public static Hashtable XLSReader(string inFilename)
{
//これに結果を代入します.
Hashtable returnValue = new Hashtable();
OleDbConnection connect = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + inFilename + ";" + " Extended Properties=Excel 8.0;");
//接続開始
connect.Open();
//テーブル名を求めます
string tablename;
DataTable schemaTable = connect.GetOleDbSchemaTable(OleDbSchemaGuid.Tables,
new Object[] { null, null, null, "TABLE" });
foreach (DataRow schemaTableRow in schemaTable.Rows)
{
//テーブルの名前
tablename = schemaTableRow["TABLE_NAME"].ToString();
//SQLのようなもの を構築します.
string sql = "SELECT * FROM `" + tablename + "`";
OleDbCommand command = connect.CreateCommand();
command.CommandText = sql;
OleDbDataAdapter adapter = new OleDbDataAdapter(command);
DataSet dts = new DataSet();
adapter.Fill(dts);
DataTable table = dts.Tables[0];
//行
ArrayList arrayY = new ArrayList();
//ADOとの互換性を取るためにヘッダーも結果に含めます。
{
ArrayList arrayX = new ArrayList();
foreach (DataColumn column in table.Columns)
{
arrayX.Add(column.ToString());
}
arrayY.Add(arrayX);
}
foreach (DataRow row in table.Rows)
{
//列
ArrayList arrayX = new ArrayList();
foreach (DataColumn column in table.Columns)
{
arrayX.Add(row[column].ToString());
}
arrayY.Add(arrayX);
}
returnValue[tablename] = arrayY;
}
connect.Close();
connect = null; //開放汁
return returnValue;
}

