OLEDB를 사용하여 시트 순서로 Excel 시트 이름 검색
Excel 통합 문서에서 시트 이름을 검색하는 작업은 프로그래밍에서 흔히 발생합니다. 그러나 OleDb를 사용할 때는 스프레드시트에 정의된 순서대로 이러한 이름을 얻는 것이 어려울 수 있습니다.
문제 정의
시트 이름을 알파벳순으로 재배열하면 OleDbConnection이 됩니다. GetOleDbSchemaTable()이 원하는 순서로 시트 이름을 제공하지 못했습니다. 이는 시트 이름이나 색인을 기반으로 데이터 검색을 지정하는 사용자의 능력을 방해하여 혼란을 야기합니다.
중첩 루프를 사용한 솔루션
한 가지 접근 방식은 시트를 순차적으로 반복하는 것입니다. 시트 0부터 시트 수에서 1을 뺀 값까지. 이렇게 하면 시트 보존이 보장됩니다. 주문.
OLEDB를 사용한 구현
Office Interop 클래스를 사용할 수 없는 경우 OLEDB를 사용한 솔루션을 사용할 수 있습니다.
/// <summary> /// Retrieves excel sheet names from an excel workbook. /// </summary> /// <param name="excelFile">The excel file.</param> /// <returns>String[]</returns> private String[] GetExcelSheetNames(string excelFile) { OleDbConnection objConn = null; System.Data.DataTable dt = null; try { // Connection String String connString = "Provider=Microsoft.Jet.OLEDB.4.0;" + "Data Source=" + excelFile + ";Extended Properties=Excel 8.0;"; // Create connection and open connection to database objConn = new OleDbConnection(connString); objConn.Open(); // Get data table containing schema guid dt = objConn.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, null); if(dt == null) return null; // Initialize String[] to store sheet names. String[] excelSheets = new String[dt.Rows.Count]; int i = 0; // Add sheet name to the string array. foreach(DataRow row in dt.Rows) { excelSheets[i] = row["TABLE_NAME"].ToString(); i++; } return excelSheets; } catch(Exception ex) { return null; } finally { // Clean up connection and data table if(objConn != null) { objConn.Close(); objConn.Dispose(); } if(dt != null) { dt.Dispose(); } } }
이것은 코드는 Excel 파일에 연결하고, 시트 이름이 포함된 데이터 테이블을 검색하고, 해당 이름이 표시되는 순서대로 String[]을 채웁니다. 스프레드시트.
위 내용은 OLEDB를 사용하여 Excel 시트 이름을 원래 순서로 검색하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!