Excelワークブックからシート名を取得するタスクは、一般的にプログラミングで遭遇します。ただし、Spreadsheetで定義されている順序でこれらの名前を取得することは、OLEDBを使用する場合に挑戦する可能性があります。 getoledbschematable()は、目的の順序でシート名を提供できません。これにより、シート名またはインデックスに基づいてデータ取得を指定し、混乱につながるユーザーの能力が妨げられます。シート0からシート数から1から1まで。これにより、シートの順序の保存が保証されます。 OLEDB
Office Interopクラスを使用することが実行不可能な場合、OLEDBを使用したソリューションが利用可能です:
///
/// ExcelワークブックからExcelシート名を取得します。
///
/// Excelファイル。
/// string []
private string [] getExcelSheetNames(StringExcelfile)
{
OLEDBCONNECTION OBJCONN = null;
System.Data.Datatable dt = null;
試す
{
//接続文字列
string connstring = "provider = microsoft.jet.oledb.4.0;"
「データソース= "Excelfile";拡張プロパティ= Excel 8.0; ";
//接続を作成し、データベースへの接続を開きます
objconn = new oledbconnection(connstring);
objconn.open();
//スキーマGUIDを含むデータテーブルを取得します
dt = objconn.getoledbscchematable(oledbschemaguid.tables、null);
if(dt == null)
nullを返します。
// string []を初期化してシート名を保存します。
string [] excelsheets = new String [dt.rows.count];
int i = 0;
//文字列配列にシート名を追加します。
foreach(dt.rowsのDatarow Row)
{
excelsheets [i] = row ["table_name"]。toString();
私 ;
}
Excelsheetsを返します。
}
キャッチ(例外Ex)
{
nullを返します。
}
ついに
{
//接続とデータテーブルをクリーンアップします
if(objconn!= null)
{
objconn.close();
objconn.dispose();
}
if(dt!= null)
{
dt.dispose();
}
}
} このコードはExcelファイルに接続し、シート名を含むデータテーブルを取得し、スプレッドシートに表示される順序でこれらの名前を文字列[]に入力します。