PHP-Excel

标签(空格分隔): php


类库下载地址:https://codeload.github.com/PHPOffice/PHPExcel/zip/1.8

php导出excel表格数据的基本实现

实现步骤:

1 把文件夹放到extend目录下
2 import助手函数导入类
3 设置excel表头
4 填充数据

注意事项:

1 数据从第二行开始填充

ThinkPHP5示例:

# 公共方法
public function phpExcel($title, $list, $fileName)
{
import('PHPExcel.Classes.PHPExcel');
import('PHPExcel.Classes.PHPExcel.IOFactory.PHPExcel_IOFactory');
$PHPExcel = new \PHPExcel;
$PHPSheet = $PHPExcel->getActiveSheet();
foreach ($list as $k => $v) {
# code...
foreach ($title as $key => $value) {
if ($k == 0) {
$PHPSheet->setCellValue($key.'1', end($value));
}
$i = $k + 2;
$PHPSheet->setCellValue($key.$i, $v[reset($value)]);
}
}
$PHPWriter = \PHPExcel_IOFactory::createWriter($PHPExcel,"Excel2007");
header("Pragma: public");
header("Expires: 0");
header("Cache-Control:must-revalidate, post-check=0, pre-check=0");
header("Content-Type:application/force-download");
header("Content-Type:application/vnd.ms-execl");
header("Content-Type:application/octet-stream");
header("Content-Type:application/download");;
header('Content-Disposition:attachment;filename='.$fileName.'.xlsx');
header("Content-Transfer-Encoding:binary");
$PHPWriter->save("php://output");
} # 调用方法:
public function main()
{
$title = [
'A' => ['id', 'ID'],
'B' => ['nickname', '昵称'],
'C' => ['phone', '手机号'],
'D' => ['avatar', '头像'],
'E' => ['profile', '个人签名'],
'F' => ['token', '用户唯一标识'],
'G' => ['sex', '性别'],
'H' => ['status', '状态'],
'I' => ['to_host', '主办方id']
];
$field = 'id, nickname, phone, avatar, profile, token, sex, status, to_host';
$list = Db::table('t_user')->field($field)->limit(10)->select(); $fileName = '测试'.date('Y-m-d');
$this->excel($title, $list, $fileName);
}

读取excel文件返回数组

$objReader = PHPExcel_IOFactory::createReaderForFile($file);

    //判断这个对象是否等于某个类
if ($objReader instanceof Csv) {
$objReader->setDelimiter(',') -> setInputEncoding('GBK');
}
//文件临时路径
$filename = $file; $objPHPExcel = $objReader->load($filename); //$filename可以是上传的表格,或者是指定的表格 $sheet = $objPHPExcel->getSheet(0); //excel中的第一张sheet $highestRow = $sheet->getHighestRow(); // 取得总行数
//$highestColumn = $sheet->getHighestColumn(); // 取得总列数 $sheetdata = $sheet->toArray();
if (!empty($count)) {
if ($highestRow > $count) {
$data = array_slice($sheetdata, 1, $count);
} else {
$data = array_slice($sheetdata, 1, $highestRow);
$count = $highestRow - 1;
}
return array('list' => $data, 'count' => $count);
}
return array('list' => $sheetdata, 'count' => $highestRow);

最新文章

  1. [翻译]AKKA笔记 - DEATHWATCH -7
  2. axure新手入门教程
  3. python zookeeeper 学习和操作
  4. Java 如何快速序列化
  5. jQuer中 height scrollTop
  6. Android下将图片载入到内存中
  7. 李洪强iOS开发Swift篇—06_流程控制
  8. 学习NodeJS第一天:node.js引言
  9. opencv中Mat类型数据操作与遍历
  10. 过渡到SSAS之一:简单模型认识
  11. JAVA DATE类型推断尺寸数据比较法
  12. mysql中的一些操作语句,留存
  13. h5drag事件
  14. PHP操作Memcached的方法汇总
  15. [SHOI2012]随机树
  16. Java过滤XSS脚本, 可通过Appscan扫描
  17. ASP.NET Core部署到Windows IIS
  18. 第七章 鼠标(CHECKER1)
  19. shell提取文件后缀名,并判断其是否为特定字符串
  20. Django框架----模板语法

热门文章

  1. Knockout源代码精析-怎样解析demo元素,获取到bindings(二)?
  2. [windows+cocos2dx]CCSprite精灵类
  3. Appium AndroidKeyCode
  4. 在GitHub上使用Hexo搭建静态博客
  5. JAVA设计模式之【外观模式】
  6. su和sudo的区别与使用,su命令,linux命令
  7. 安卓-活动Activity
  8. BZOJ 2096 单调队列
  9. MariaDB GALERA 集群双节点部署
  10. form表单里的坑