Excel.php 2.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
  1. <?php
  2. namespace app\common;
  3. class Excel{
  4. public function __construct()
  5. {
  6. include_once (CMF_ROOT.'/extend/Excel/PHPExcel.php');
  7. }
  8. public function import($file = '', $cell = [], $crop = 0, $sheet = 0)
  9. {
  10. $file = iconv("utf-8", "gb2312", $file); //转码
  11. if (empty($file) OR !file_exists($file)) {
  12. die('file not exists!');
  13. }
  14. $objRead = new \PHPExcel_Reader_Excel2007(); //建立reader对象
  15. if (!$objRead->canRead($file)) {
  16. $objRead = new \PHPExcel_Reader_Excel5();
  17. if (!$objRead->canRead($file)) {
  18. die('No Excel!');
  19. }
  20. }
  21. $cellName = ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z', 'AA', 'AB', 'AC', 'AD', 'AE', 'AF', 'AG', 'AH', 'AI', 'AJ', 'AK', 'AL', 'AM', 'AN', 'AO', 'AP', 'AQ', 'AR', 'AS', 'AT', 'AU', 'AV', 'AW', 'AX', 'AY', 'AZ'];
  22. $obj = $objRead->load($file); //建立excel对象
  23. $currSheet = $obj->getSheet($sheet); //获取指定的sheet表
  24. $columnH = $currSheet->getHighestColumn(); //取得最大的列号
  25. $columnCnt = array_search($columnH, $cellName);
  26. $rowCnt = $currSheet->getHighestRow(); //获取总行数
  27. $data = [];
  28. for ($_row = 1; $_row <= $rowCnt; $_row++) { //读取内容
  29. if ($_row > $crop) {
  30. for ($_column = 0; $_column <= $columnCnt; $_column++) {
  31. $cellId = $cellName[$_column] . $_row;
  32. $cellValue = $currSheet->getCell($cellId)->getValue();
  33. //$cellValue = $currSheet->getCell($cellId)->getCalculatedValue(); #获取公式计算的值
  34. if ($cellValue instanceof \PHPExcel_RichText) { //富文本转换字符串
  35. $cellValue = $cellValue->__toString();
  36. } else {
  37. $cellValue = (string)$cellValue;
  38. }
  39. if (!empty($cell[$_column])) {
  40. $data[$_row][$cell[$_column]] = $cellValue;
  41. } else {
  42. $data[$_row][] = $cellValue;
  43. }
  44. }
  45. }
  46. }
  47. return array_values($data);
  48. }
  49. }