Excel内容获取方式

 1.

 

Ole db(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报异常。(单个Unit获取的方式也一样)

 

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.                         }"                                                           

 

 

 

你可能感兴趣的:(Excel,职场,获取,休闲)