@IT会議室は、ITエンジニアに特化した質問・回答コミュニティ「QA@IT」に生まれ変わりました。ぜひご利用ください。
- PR -

OleDbによるExcelファイルのシート名取得について

1
投稿者投稿内容
たけ
会議室デビュー日: 2004/12/13
投稿数: 6
投稿日時: 2005-07-04 20:16
言語はC#です。
Excelファイルのシート名の取得方法について、
MSDNの記事を参考にしていますが、
解決できない点があるので、質問させてください。
http://www.microsoft.com/japan/msdn/library/default.asp?url=/japan/msdn/library/ja/cpref/html/frlrfS
-----------------------
// DataTableを取得
public DataTable GetTables(OleDbConnection conn)
{
 conn.Open();
 DataTable schemaTable = conn.GetOleDbSchemaTable(OleDbSchemaGuid.Tables,
  new object[] {null, null, null, "TABLE"});
 conn.Close();
 return schemaTable;
}

// シート名を取得
foreach(DataRow row in schemaTable.Rows)
{
 string strSheetTableName = row["TABLE_NAME"].ToString();
}
-----------------------

上記方式でシート名を取得すると、余分なシート名(?)を取得してしまいます。
・Excelファイルによっては(現状違いが分かりません)、
 存在するシート名以外に、“シート名$”($が付与されている)というシート名を取得する。
・範囲の名前(挿入→名前→定義で追加)が定義されていると、この名称も取得する。

これらの余分なシート名(?)を取得しなくなるような指定方法はありますでしょうか。
OleDbSchemaGuid.TablesフィールドのTABLE_TYPEの指定を変えても効果はありませんでした。
(“TABLE”の指定を変更すると、実在するシート名も取得できなかった)
http://www.microsoft.com/japan/msdn/library/default.asp?url=/japan/msdn/library/ja/cpref/html/frlrfsystemdataoledboledbschemaguidclasstablestopic.asp

以上、よろしくお願いします。
たけ
会議室デビュー日: 2004/12/13
投稿数: 6
投稿日時: 2005-07-04 20:18
自己レスです。
1つ目のアドレスが間違っていました。
http://www.microsoft.com/japan/msdn/library/default.asp?url=/japan/msdn/library/ja/cpref/html/frlrfSystemDataOleDbOleDbConnectionClassGetOleDbSchemaTableTopic.asp
1

スキルアップ/キャリアアップ(JOB@IT)