를 사용할 때 스프레드 시트에 정의 된 순서대로 어려울 수 있습니다. getoledbschematable ()는 원하는 순서로 시트 이름을 제공하지 못합니다. 이는 시트 이름 또는 색인을 기반으로 데이터 검색을 지정하는 사용자의 능력을 방해하여 혼란을 초래합니다.
시트 0에서 시트 수가 마이너스 1. 이렇게하면 시트 순서의 보존이 보장됩니다.
구현 OLEDB 사용
Office Interop 클래스를 사용하는 경우 OLEDB를 사용하는 솔루션을 사용할 수 없습니다 :
//
/// Excel 통합 문서에서 Excel 시트 이름을 검색합니다.
///
/// Excel 파일.
/// String []
개인 문자열 [] getExcelSheetNames (String Excelfile)
{
OLEDBCONNECTION OBJCONN = NULL;
system.data.datatable dt = null;
노력하다
{
// 연결 문자열
문자열 connstring = "제공자 = microsoft.jet.oledb.4.0;"
"data source ="excfilile "; 확장 속성 = Excel 8.0;";
// 연결 및 데이터베이스에 연결을 생성합니다
OBJCONN = 새로운 OLEDBCONNECTION (CONNSTRING);
objconn.open ();
// 스키마 가이드가 포함 된 데이터 테이블을 가져옵니다
dt = objconn.getoledbschematable (Oledbschemaguid.tables, null);
if (dt == null)
널 리턴;
// string을 초기화하여 시트 이름을 저장합니다.
문자열 [] 엑셀 시트 = 새 문자열 [dt.rows.count];
int i = 0;
// 문자열 배열에 시트 이름을 추가합니다.
foreach (dt.rows의 Datarow Row)
{
ExcelSheets [i] = row . toString ();
나 ;
}
엑셀 시트를 반환합니다.
}
캐치 (예외)
{
널 리턴;
}
마지막으로
{
// 연결 및 데이터 테이블 정리
if (objconn! = null)
{
objconn.close ();
objconn.dispose ();
}
if (dt! = null)
{
dt.dispose ();
}
}
}
이 코드는 Excel 파일에 연결하고 시트 이름이 포함 된 데이터 테이블을 검색하고 스프레드 시트에 표시된 순서 대로이 이름으로 문자열을 채 웁니다.