Excel 컨텐츠 가져오기 방법

1.
 
Oledb(Jet) 규칙은 다음과 같습니다. ole db(JET)는 sheet의 앞줄, 기본 8줄을 스캔합니다. (이 값은 등록표 설정: HkeyLocalMachine/Software/Microsoft/Jet/4.0/Engines/Excel/TypeGuessRows) 현재 열의 데이터 형식을 결정합니다.
공식은 필터링할 수 없음(Formula)
 
Range.Formula
 

  
  
  
  
  1. Array array = (Array)range.Formula; 
  2. foreach (object strCell in array) 
  3.     string txtCell = strCell.ToString(); 
  4.     if (txtCell.Trim() != string.Empty) 
  5.     { 
  6.         //  
  7.         if (txtCell.Substring(0, 1) != "="
  8.             strInput += txtCell + symbol; 
  9.     } 

 
그러나 칸의 내용이 1024,range를 초과하면Formula에서 예외를 보고합니다.(단일 유닛이 가져오는 방식도 마찬가지)
 
Range.Values2
1024를 초과하는 셀을 가져올 수 있지만 Formula를 처리할 수 없습니다.
 
 
대안:
Sheet에 Formula가 포함되어 있습니까? =
1.Range.Values2 방식으로 Sheet 가져오기;
2. Col에 Formula가 포함되어 있습니까? =
  1)Range.Values2 방식으로 Col 가져오기;
2) 셀에 Formula가 있습니까? =
Formula 셀 없음 가져오기
           
 
 
최종 시나리오:
 
 

  
  
  
  
  1. "                        OExcel.Range range = mysheet.UsedRange.SpecialCells(OExcel.XlCellType.xlCellTypeConstants, OExcel.XlSpecialCellsValue.xlTextValues); 
  2.  
  3.                         foreach (var item in range.Cells) 
  4.                         { 
  5.                             var cellRange = item as OExcel.Range; 
  6.                             if (cellRange == null
  7.                             { 
  8.                                 continue
  9.                             } 
  10.  
  11.                             string strCell = cellRange.Value2.ToString(); 
  12.                             if (strCell.Trim() != string.Empty) 
  13.                             { 
  14.                                 strInput += strCell + symbol; 
  15.                             } 
  16.                         }"                                                           

 
 

좋은 웹페이지 즐겨찾기