首页 > CMS > Discuz > 正文

在disucz中使用PHPExcel,导入电子表格

2024-09-11 09:03:10
字体:
来源:转载
供稿:网友

在做discuz二次开发的时候,有个需求是导入产品卡密积分的Excel表格,discuz采用的是php语言开发,关于Excel方面的操作,当然要借助PHPExcel项目了.

PHPExcel - OpenXML - Read, Write and Create Excel documents in PHP - Spreadsheet engine

1、下载PHPExcel项目

地址http://phpexcel.codeplex.com/

2、在source/include/中创建目录PHPExcel

在disucz中使用PHPExcel,导入电子表格.

3、在discuz源代码中引用PHPExcel.php,需要先注销discuz原有的autoload,然后再注册.

  1. spl_autoload_unregister(array('core''autoload')); 
  2. include DISCUZ_ROOT.'./source/include/PHPExcel/PHPExcel.php'
  3. include DISCUZ_ROOT.'./source/include/PHPExcel/PHPExcel/IOFactory.php'
  4. spl_autoload_register(array('core''autoload')); 

4、读取Excel电子表格内容,下面示例.

  1. $objReader = PHPExcel_IOFactory::createReader('Excel2007');  
  2. $objReader->setReadDataOnly(true);  
  3. $objPHPExcel = $objReader->load($filename);  
  4. $objWorksheet = $objPHPExcel->getActiveSheet();  
  5. $highestRow = $objWorksheet->getHighestRow(); 
  6. $highestColumn = $objWorksheet->getHighestColumn(); 
  7. $highestColumnIndex = PHPExcel_Cell::columnIndexFromString($highestColumn); 
  8. $excelData = array();   
  9. for($row = 1; $row <= $highestRow$row++){ 
  10. $excelrow = array(); 
  11. for ($col = 0; $col < $highestColumnIndex$col++){ 
  12. $cellValue = (string)$objWorksheet->getCellByColumnAndRow($col$row)->getValue(); 
  13. $cellValue = trim($cellValue); 
  14. if($col == 0 && emptyempty($cellValue)){ 
  15. break
  16. if($col == 6 || $col == 9){ 
  17. $cellValue=gmdate("Y-m-d", PHPExcel_Shared_Date::ExcelToPHP($cellValue)); 
  18. //一般第一行为字段;如果为单元格内容为空,说明字段结束,修正实际的栏目数量 
  19. if($row == 1 && emptyempty($cellValue)){ 
  20. $highestColumnIndex = $col
  21. continue//开源软件:Vevb.com 
  22. $excelrow[] = $cellValue
  23. if(emptyempty($excelrow)){ 
  24. break
  25. if($row == 1){ 
  26. continue
  27. $excelData[] = $excelrow
  28. }
  29. }

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表