论坛风格切换
  • 3676阅读
  • 0回复

[整体方案]pw论坛会员导出方案 [复制链接]

上一主题 下一主题
离线谯周
 

发帖
142
金币
0
威望
55
只看楼主 倒序阅读 使用道具 楼主  发表于: 2011-08-29
工具:使用pear的Spreadsheet_Excel_Writer组件
dos>cd php的安装目录
dos> pear install Spreadsheet_Excel_Writer-0.9.2
安装完后,就可以使用Spreadsheet_Excel_Writer组件
通过phpinfo(),检查pear包的这个路径是否在php.ini的include_path中。

  1. <?php
  2. ini_set('memory_limit', '512M');
  3. ini_set('max_execution_time', 600);
  4. require_once('global.php');
  5. require_once('Spreadsheet/Excel/Writer.php');
  6. define('USER_NUM_PER_SHEET', 1000);
  7. $total = $db->get_value('SELECT COUNT(*) FROM pw_members');
  8. $totalPage = ceil($total/USER_NUM_PER_SHEET);
  9. //测试用,只下载5000个用户
  10. //$totalPage = 5;
  11. $workbook = new Spreadsheet_Excel_Writer();
  12. $workbook->send('会员信息表.xls');
  13. $maxUid = 0;
  14. for($page=1; $page <= $totalPage; $page++){
  15.     $start = ($page-1)*USER_NUM_PER_SHEET+1;
  16.     $sheetName = $start."-".$page*USER_NUM_PER_SHEET;
  17.     $worksheet =& $workbook->addWorksheet($sheetName);
  18.     //设置标题栏的样式
  19.     $header = & $workbook->addformat(array('Size'=>14, 'FgColor'=>'yellow', 'Bold'=>1, 'Align'=>'center'));
  20.     //设置正文的样式
  21.     $body = & $workbook->addformat(array('Size'=>12, 'Align'=>'center'));
  22.     //设置每列的宽度
  23.     $worksheet->setColumn(0, 0, 20);
  24.     $worksheet->setColumn(1, 1, 10);
  25.     $worksheet->setColumn(2, 2, 40);
  26.     $worksheet->setColumn(3, 5, 25);
  27.     
  28.     $worksheet->write(0, 0, '用户名', $header);
  29.     $worksheet->write(0, 1, '性别', $header);
  30.     $worksheet->write(0, 2, 'Email', $header);
  31.     $worksheet->write(0, 3, '注册时间', $header);
  32.     $worksheet->write(0, 4, '最后登录', $header);
  33.     $worksheet->write(0, 5, '最后登录IP', $header);
  34.     
  35.     $query = $db->query("SELECT uid,username, gender, email, regdate, lastvisit, onlineip FROM pw_members LEFT JOIN pw_memberdata USING(`uid`) WHERE `uid` > {$maxUid} ORDER BY uid LIMIT ".USER_NUM_PER_SHEET);
  36.     $offset = 1;
  37.     while($row = $db->fetch_array($query)){
  38.         $regTime = get_date($row['regdate'], 'Y-m-d H:i:s');
  39.         $lastVisitTime = get_date($row['lastvisit'], 'Y-m-d H:i:s');
  40.         $olparts = explode('|', $row['onlineip']);
  41.         $lastVisitIp = $olparts[0];
  42.         $sex = '保密';
  43.         switch(intval($row['gender'])){
  44.             case 1:
  45.                 $sex = '男';
  46.                 break;
  47.             case 2:
  48.                 $sex = '女';
  49.                 break;
  50.             case 0:
  51.             default:
  52.                 break;
  53.         }
  54.         
  55.         $worksheet->write($offset, 0, $row['username'], $body);
  56.         $worksheet->write($offset, 1, $sex, $body);
  57.         $worksheet->write($offset, 2, $row['email'], $body);
  58.         $worksheet->write($offset, 3, $regTime, $body);
  59.         $worksheet->write($offset, 4, $lastVisitTime, $body);
  60.         $worksheet->write($offset, 5, $lastVisitIp, $body);
  61.         $maxUid = $row['uid'];
  62.         $offset ++;
  63.     }
  64. }
  65. $workbook->close();

export.rar (2 K) 下载次数:81

快速回复
限100 字节
如果您提交过一次失败了,可以用”恢复数据”来恢复帖子内容
 
提到某人:
选择好友
上一个 下一个