2011-11-21 4 views
1

C# 코드에서 시트 이름을 Excel로 읽으려고하면 알파벳순으로 반환됩니다. 사실 정상적인 순서로 그들을 필요로합니다.Excel 시트가 기본 순서로 검색되지 않습니다.

사용자가 시트 번호를 입력해야하는 시나리오가 있기 때문에 이것은 시트 결과를 처리해야한다는 것을 기반으로합니다. 그러나 코드에서 읽으면 시트가 알파벳 순으로 정확하게 반환됩니다. 시트 이름을 정상 순서로 어떻게 얻을 수 있습니까? Excel 파일은 실제 데이터베이스를하지 않기 때문에 스프레드 시트의 경우, MSDN 당으로

sheetNamesDT = objConn.GetOleDbSchemaTable(OleDbSchemaGuid.Tables,null); 
+4

는 [여기] 다음과 같은 질문을합니다 (http://stackoverflow.com/questions/1164698/using-excel-oledb-to-get-sheet-names-in-sheet -주문) – seanzi

답변

1

처럼 우리가 코드를 사용하는 시트 이름을 얻기 위해

의 Excel 내에서 작동하지 않을 수 있습니다. 따라서 통합 문서에서 시각화 순서대로 시트 이름을 가져올 수 없습니다.

코드는 시각적 모양 사용하여 상호 운용성에 따라 시트 이름을 얻을 수 있습니다 :

Microsoft Excel에서 12.0 개체 라이브러리에 대한 참조를 추가합니다.

다음 코드는 정렬 된 이름이 아닌 통합 문서에 저장된 실제 순서로 시트 이름을 제공하지만이 경우 해당 컴퓨터에 사무실을 설치해야합니다.

샘플 코드 :

using Microsoft.Office.Interop.Excel; 

string filename = "C:\\romil.xlsx"; 

object missing = System.Reflection.Missing.Value; 

Microsoft.Office.Interop.Excel.Application excel = new Microsoft.Office.Interop.Excel.Application(); 

Microsoft.Office.Interop.Excel.Workbook wb =excel.Workbooks.Open(filename, missing, missing, missing, missing,missing, missing, missing, missing, missing, missing, missing, missing, missing, missing); 

ArrayList sheetname = new ArrayList(); 

foreach (Microsoft.Office.Interop.Excel.Worksheet sheet in wb.Sheets) 
{ 
    sheetname.Add(sheet.Name); 
} 
관련 문제