C # 코드는 상이한 방법으로 달성하기 위해, 엑셀 파일 확장자에 따라 DataTable을 엑셀 파일로의 전환을 달성하기 위해, 다음 엑셀 파일 (* .XLSX 및 * .XLS)에 의해 2 개 개의 확장에 따라 달성된다. : 파일 확장자 방법은 위젯 Path.GetExtension (파일 이름) 에있어서, 참조 : 사용 System.IO; 코드하면 다음과 같다 :( 파일명은 다음 코드에 나타나는 곳에 드라이브 문자 절대 경로)
-
주요 엑셀 파일 확장자 방법 다른 통화에 따르면,
개인 DataTable을 FileToDataTable ( 문자열 fileName에) { DataTable을 DT = 새로운 DataTable을을 (); 문자열 extendName = Path.GetExtension (파일 이름); // 获取文件的后缀名 스위치 (extendName.ToLower ()) { 경우 " .XLS " : DT = XlsToDataTable (파일 이름); 휴식 ; 케이스 " .xlsx '에 ' : DT = XlsxToDataTable (파일 이름); 휴식 ; 기본값 : 휴식 ; } 반환 DT; }
-
XlsToDataTable ()
개인 DataTable을 XlsToDataTable ( 문자열 파일 이름) { DataTable에 데이터 테이블은 = 새로운 DataTable을을 (); 스트림 스트림 = 널 (null) ; 시도 { 스트림 = File.OpenRead (파일 이름); HSSFWorkbook hssfworkbook = 새로운 HSSFWorkbook (스트림); HSSFSheet hssfsheet = (HSSFSheet) hssfworkbook.GetSheetAt (hssfworkbook.ActiveSheetIndex); HSSFRow hssfrow = (HSSFRow) hssfsheet.GetRow ( 0 ); INT= lastCellNum ( INT ) hssfrow.LastCellNum] 대 ( INT I = ( INT ) hssfrow.FirstCellNum; I <lastCellNum; I ++ ) { DataColumn에 열 = 새로운 새 를 DataColumn (hssfrow.GetCell (I) .StringCellValue) dataTable.Columns.Add ( 열); } dataTable.TableName = hssfsheet.SheetName; INT lastRowNum = hssfsheet.LastRowNum; // 열 이름 테이블 패딩 데이터의 두 번째 행의 시작 을위한 ( INT I = hssfsheet.FirstRowNum + 1.; I <hssfsheet.LastRowNum; I ++) // { HSSFRow hssfrow2 = (HSSFRow) hssfsheet.GetRow (I); 된 DataRow의 DataRow = dataTable.NewRow (); 대 ( INT J = ( INT ) hssfrow2.FirstCellNum; J <lastCellNum, J ++) // { DataRow를 [J] = hssfrow2.GetCell (j); // } dataTable.Rows.Add (하여 DataRow); } stream.Close (); } 캐치 (예외 예) { ScriptManager.RegisterStartupScript (페이지, GetType을 (), " alertForm " , " 경고 ( '의 DataTable에 XLS : " + ex.Message + " '); " , 진정한 ); } 마지막 { 경우 (스트림 =! 널 ) { stream.Close (); } } 반환 데이터 테이블을; }
- XlsxToDataTable ()
공공 DataTable을 XlsxToDataTable ( 문자열 vFilePath는) { DataTable에 데이터 테이블은 = 새로운 DataTable을을 (); 시도 { SLDocument sldocument = 새로운 SLDocument (vFilePath); dataTable.TableName = sldocument.GetSheetNames () [ 0 ]; SLWorksheetStatistics worksheetStatistics = sldocument.GetWorksheetStatistics (); INT startColumnIndex = worksheetStatistics.StartColumnIndex; INT endColumnIndex =worksheetStatistics.EndColumnIndex; INT startRowIndex = worksheetStatistics.StartRowIndex; INT endRowIndex = worksheetStatistics.EndRowIndex; 대 ( INT I = startColumnIndex; I <= endColumnIndex; I ++ ) { SLRstType cellValueAsRstType = sldocument.GetCellValueAsRstType ( 1 , I); dataTable.Columns.Add ( 새 DataColumn에 (cellValueAsRstType.GetText () 대해서 typeof ( 문자열 ))); } 대 ( INT J = + startRowIndex1 ; J <= endRowIndex; J ++ ) { 의 DataRow의 DataRow = dataTable.NewRow (); 대 ( INT I = startColumnIndex; I <= endColumnIndex; I ++ ) { 의 DataRow [I - 1 ] = sldocument.GetCellValueAsString (j, I); } dataTable.Rows.Add (하여 DataRow); } } 캐치 (예외 예) { 던질 새로운 예외 ( " DataTable을에 XLSX을 : \ n " +ex.Message); } 반환 데이터 테이블을; }