最近用到php 对excel 的操作 下来 小弟为大家 先贴一下自己的代码  有什么补充的 大神们请指点下。感激不尽。

我用的是yii2   yii2中有类 phpexcel

先说说下载吧。 首先下载一个文件是不能 用异步去的 比如ajax  去访问这个方法的是不会下载的 。

//首先你的引入PHPExcel
//下载代码
$fileName = '测试excel';
$excel = new \PHPExcel();
$excelSheet = $excel->setActiveSheetIndex(0); $excel->getActiveSheet()->setCellValue('A1', '第一列标题');
$excel->getActiveSheet()->setCellValue('B1', '第二列标题');
$excel->getActiveSheet()->setCellValue('C1', '第三列标题');
$excel->getActiveSheet()->setCellValue('D1', '第四列标题'); // $result 是一个数组。 这是在确定 如果有4列的情况下
//setCellValueExplicit 也是设置值 我测试的结果是在excel 表格中不会吧数子转化 会直接以文本的格式输出 .
foreach( $result as $key=> $value){
$num = $key+2; //num 从=2 开始。 key=0
$excel->getActiveSheet()->setCellValue('A' . $num, $value['值1']);
$excel->getActiveSheet()->setCellValue('B' . $num, $value['值2']);
$excel->getActiveSheet()->setCellValueExplicit('C' . $num, $value['值3']);
$excel->getActiveSheet()->setCellValueExplicit('D' . $num, $value['值4']);
} /**
* 比如不确定有几列 可以做双循环。 先循环 有多少行 在设置每一列的值
* $column 表示有多少列
* 我这个方法没自己测过 但大致思路是不错的感觉 如有问题大家积极反馈。
*/
foreach( $result as $key=> $value ){
$num = $key+2; //由于key=0 num 从=2 开始。num =1是设置第一列的值
for( $i='A';$i<=leng($column);$i++){
//A2,B2,C2,D2 A3,B3,C3,D3 .... 个人觉得效果会是这样。
$excel->getActiveSheet()->setCellValue( $i . $num, $value['值1']);
}
} header('Content-Type: application/vnd.ms-excel');
header('Content-Disposition: attachment;filename="' . time() . '.xlsx');
header('Cache-Control: max-age=0'); $objWriter = \PHPExcel_IOFactory::createWriter($excel, 'Excel2007');
$objWriter->save('php://output');
exit;

》》》接下来看 如何读取表格

$excelRead = new \PHPExcel_Reader_Excel2007();
//canRead 是否能读取文件 不能读取则返回false
if (!$excelRead->canRead($file)) {
$excelRead = new \PHPExcel_Reader_Excel5();
if (!$excelRead->canRead($file)) {
return ['error'=>'不能读取文件'];
}
}
//从文件加载PHPExcel $file 是上传的文件 或者要读取的文件
$phpExcel = $excelRead->load($file); $curSheet = $phpExcel->getSheet(0);
//最大行数
$rowCount = $curSheet->getHighestRow();
//最大列数
$columnCount = $curSheet->getHighestColumn(); //把读取到的数据放到一个数组中 for ($row = 2; $row <= $rowCount; $row++) {
$value = [];
for ($col = 'A'; $col <= $colCount; $col++) {
$tmp = $col . $row; //excel 坐标 A2B2 A3B3 A4B4 A5B5 A6B6....
$value['自定义'] = trim($curSheet->getCell($tmp)->getValue());  //获取对应的值。
}
$data[] = $value;
}
unset($file); //这里你可以删除临时文件。
return $data;

php 读取和下载execl的更多相关文章

  1. Java如何读取和下载网页?

    在Java编程中,如何读取和下载网页? 以下示例显示如何使用net.URL类的URL()构造函数来读取和下载网页. package com.yiibai; import java.io.Buffere ...

  2. Java读取并下载网络文件

      CreateTime--2017年8月21日10:11:07 Author:Marydon import java.io.ByteArrayOutputStream; import java.io ...

  3. ajax请求下载Execl表

    Execl表是经常要用到的存放二位数据的表格,Java也可以直接操作Execl表,经常用到的方式就是jxl和poi. 在这次项目中,我用到的poi往Execl中写数据,刚开始设计的是前端发送一个aja ...

  4. Ajax 请求下载 Execl 文件

    通过Ajax请求下载Execl 的问题,掉进一个坑里半个多小时,特此来记录一下 . 起初  我误以为是后台的问题,然而调试了一下并不是这样的,也不会报错,且进入了success 函数. 以下的事件及请 ...

  5. 上传下载execl

    ajax上传execl + easyexecl解析execl <!DOCTYPE html> <html> <head> <meta charset=&quo ...

  6. Java file文件的写入和读取及下载

    File文件的写入 一.FileWriter 和BufferedWriter 结合写入文件 FileWriter是字符流写入字符到文件.默认情况下,它会使用新的内容代替文件原有的所有内容,但是,当指定 ...

  7. Java 实现网络图片的读取与下载

    //网络图片的下载,读取与删除 public static void fileDowAndDel(String httpurl){ try { URL url = new URL(httpurl); ...

  8. Java下载execl表格

    Java用POI往execl表格中写数据,并下载下来有两种方式 1.用poil的API创建表格,并设计好表格格式,然后往里面写数据 /** * execl导出 创建表格式,并写入数据 * @param ...

  9. response读取图片+下载图片

    读取图片 import java.io.FileInputStream; import java.io.IOException; import java.io.InputStream; import ...

随机推荐

  1. SEH:结构化异常处理 学习

    SEH:结构化异常处理 结构化异常处理机制提供了一个操作系统,用于优化结构的方案,为客户提供更强大的程序执行环境.试想一下,你写程序不用考虑内存访问错误,那里是空指针错误,一直在按照程序的逻辑结构来写 ...

  2. I.MX6 support eMMC 5.0

    /***************************************************************************** * I.MX6 support eMMC ...

  3. PS抠图之单色背景图片

    PS一直大家比较喜欢的一款图像处理软件,很多朋友对使用基本的功能.最近很多的朋友都在问我关于PS抠图的方法,这些方法也不是一句两句就能说清楚,并且每天都重复的叫他们,不如直接写出来刚刚接触到的朋友一起 ...

  4. leetcode_sql_3,181,182,183

    181. Employees Earning More Than Their Managers The Employee table holds all employees including the ...

  5. [BZOJ5290][HNOI2018]道路

    bzoj luogu sol 考场上普及\(dp\)都做不来,果然是思想僵化了. 设\(f[u][i][j]\)表示在\(u\)点,上方有\(i\)条未修复的公路和\(j\)条未修复的铁路的最小花费. ...

  6. hdu 3625 Examining the Rooms——第一类斯特林数

    题目:http://acm.hdu.edu.cn/showproblem.php?pid=3625 n^2 求斯特林数就行.要减去的就是1号钥匙在1号房间的方案,即 s[ n-1 ][ m-1] . ...

  7. 洛谷 1099 ( bzoj 1999 ) [Noip2007]Core树网的核

    题目:https://www.lydsy.com/JudgeOnline/problem.php?id=1999 <算法竞赛进阶指南>346页.https://www.cnblogs.co ...

  8. 搭建JIRA汉化后乱码问题

    JIRA的简体中文乱码(使用了BIG5导致) 安装完JIRA汉化后发现一部分中文显示乱码,经检查:本来应该是UTF-8编码的却显示成Big5,Big5根本不支持简体中文的! 进入JIRA数据库后找到 ...

  9. 利用ffmpeg一步一步编程实现摄像头采集编码推流直播系统

    了解过ffmpeg的人都知道,利用ffmpeg命令即可实现将电脑中摄像头的画面发布出去,例如发布为UDP,RTP,RTMP等,甚至可以发布为HLS,将m3u8文件和视频ts片段保存至Web服务器,普通 ...

  10. 庖丁解牛-----Live555源码彻底解密(根据MediaServer讲解Rtsp的建立过程)

    live555MediaServer.cpp服务端源码讲解 int main(int argc, char** argv) { // Begin by setting up our usage env ...