php操作Excel

1.new PHPExcel对象
$objPHPExcel = new PHPExcel();

2表的初始化设置
$objPHPExcel->getProperties()->setCreator($project_info['chief_name']) //创建人
->setLastModifiedBy($project_info['chief_name']) //最后修改人
->setTitle($project_info['chenghu'] . '先生/女士装修报价单') //标题
->setSubject($project_info['chenghu'] . '先生/女士装修报价单') //主题
->setDescription($project_info['chenghu'] . '先生/女士装修报价单') //描述
->setKeywords($project_info['chenghu'] . '先生/女士装修报价单') //关键词
->setCategory($project_info['chenghu'] . '先生/女士装修报价单'); //分类

//表格头部
$objPHPExcel->setActiveSheetIndex(0);//第一个sheet
$objPHPExcel->getActiveSheet()->setTitle($project_info['chenghu'] . '先生&女士装修报价单');//第一页对应的标题
$objPHPExcel->getDefaultStyle()->getFont()->setSize(13);//设置默认字体大小13

//表格内容

$objPHPExcel->getActiveSheet()->getStyle($cv)->getAlignment()->setWrapText(true);
$objPHPExcel->getActiveSheet()->getStyle($cv . ($bench + 1))->getFont()->setBold(true);//字体加粗

$objPHPExcel->getActiveSheet()->mergeCells('A' . ($bench + 1) . ':G' . ($bench + 1));//水平合并A-G的列
$objPHPExcel->getActiveSheet()->setCellValue('A' . ($bench + 1), $str);//设置单元格的值

$bench 代表行数
$colsymbol代表按顺序用到的列的集合,是个数组
$cellwidth 代表按顺序用到的单元格宽度的集合,是个数组
$rowheight 代表单元格高度的集合,是个数组

foreach ($rowheight as $rk => $rv) {
foreach ($colsymbol as $k => $cv) {
$objPHPExcel->getActiveSheet()->getColumnDimension($cv)->setWidth($cellwidth[$k]);
$objPHPExcel->getActiveSheet()->getRowDimension($rk + 1)->setRowHeight($rv);
if ($cv == 'G') {
$objPHPExcel->getActiveSheet()->mergeCells('A' . ($rk + 1) . ':G' . ($rk + 1));
$objPHPExcel->getActiveSheet()->setCellValue('A' . ($rk + 1), $headercontent[$rk]);
}
}
}

以上代码段奠定了这张表的格局

总体思路,以操作单元格为基准来定位,横坐标是行号,纵坐标是列数
设置单元格格式,设置单元格内容,合并单元格这几个常规操作的方法要运用自如

简单的导出
YiiUtils::exportExcel($title, $exceldata);

$title = date('Y-m-d').'数据';

var_dump($exceldata)的数据如下:

array (size=288)
0 =>
array (size=4)
0 => string '项目名称' (length=12)
1 => string '单位' (length=6)
2 => string '单价' (length=6)
3 => string '工艺说明及材料说明' (length=27)
1 =>
array (size=4)
0 => string '卫生间基层回填(从楼盘运碎砖)' (length=45)
1 => string '㎡' (length=3)
2 => string '250' (length=3)
3 => string '⑴用外楼盘碎砖及砼结构碎渣回填,从楼盘外运到工地。' (length=75)
2 =>
array (size=4)
0 => string '卫生间基层回填' (length=21)
1 => string '㎡' (length=3)
2 => string '11500' (length=5)
3 => string '⑴用本工地碎砖及砼结构碎渣回填(深度500mm以内)' (length=66)
3 =>
array (size=4)
0 => string '卫生间基层回填(从楼下运碎砖)' (length=45)
1 => string '㎡' (length=3)
2 => string '12000' (length=5)
3 => string '⑴用本楼盘其他碎砖及砼结构碎渣回填,楼下有碎砖需从楼下运到工地。' (length=96)
......

已key为行号,二维数组的每个值为列的值

/**
*
*读取excel文件中的第一个工作表并将内容已数组形式输出
*$filePath为上传文件的绝对路径
**/
public static function readExcel($filePath)
{
$PHPExcel = new PHPExcel();

/**默认用excel2007读取excel,若格式不对,则用之前的版本进行读取*/
$PHPReader = new PHPExcel_Reader_Excel2007();
if (!$PHPReader->canRead($filePath)) {
$PHPReader = new PHPExcel_Reader_Excel5();
if (!$PHPReader->canRead($filePath)) {
return array();
}
}
$contentArr = array();
$PHPExcel = $PHPReader->load($filePath);
/**读取excel文件中的第一个工作表*/
$currentSheet = $PHPExcel->getSheet(0);
/**取得最大的列号*/
$allColumn = $currentSheet->getHighestColumn();
/**取得一共有多少行*/
$allRow = $currentSheet->getHighestRow();
/**从第二行开始输出,因为excel表中第一行为列名*/
for ($currentRow = 2; $currentRow <= $allRow; $currentRow++) {
/**从第A列开始输出*/
$item = array();
for ($currentColumn = 'A'; $currentColumn <= $allColumn; $currentColumn++) {
$val = $currentSheet->getCellByColumnAndRow(ord($currentColumn) - 65, $currentRow)->getValue();
$item[] = $val;
}
$contentArr[] = $item;
}
return $contentArr;
}

php操作Excel的更多相关文章

  1. 免费高效实用的.NET操作Excel组件NPOI(.NET组件介绍之六)

    很多的软件项目几乎都包含着对文档的操作,前面已经介绍过两款操作文档的组件,现在介绍一款文档操作的组件NPOI. NPOI可以生成没有安装在您的服务器上的Microsoft Office套件的Excel ...

  2. C#通过NPOI操作Excel

    参考页面: http://www.yuanjiaocheng.net/webapi/create-crud-api-1-post.html http://www.yuanjiaocheng.net/w ...

  3. POI操作Excel

    POI和Excel简介 JAVA中操作Excel的有两种比较主流的工具包: JXL 和 POI .jxl 只能操作Excel 95, 97, 2000也即以.xls为后缀的excel.而poi可以操作 ...

  4. NPOI操作EXCEL(六)——矩阵类表头EXCEL模板的解析

    哈哈~~~很高兴还活着.总算加班加点的把最后一类EXCEL模板的解析做完了... 前面几篇文章介绍了博主最近项目中对于复杂excel表头的解析,写得不好,感谢园友们的支持~~~ 今天再简单讲诉一下另一 ...

  5. VB操作EXCEL文件

    用VB操作Excel(VB6.0)(整理) 首先创建Excel对象,使用ComObj:Dim ExcelID as Excel.ApplicationSet ExcelID as new Excel. ...

  6. VB.NET操作Excel

    VB.NET操作Excel的基本方法与例子:

  7. C# 操作excel单元格居中

    C# 操作excel //导出Excel        private void ExportExcel(string fileName, System.Data.DataTable myDGV, s ...

  8. NPOI操作Excel辅助类

    /// <summary> /// NPOI操作excel辅助类 /// </summary> public static class NPOIHelper { #region ...

  9. JAVA的POI操作Excel

    1.1Excel简介 一个excel文件就是一个工作簿workbook,一个工作簿中可以创建多张工作表sheet,而一个工作表中包含多个单元格Cell,这些单元格都是由列(Column)行(Row)组 ...

  10. NPOI操作EXCEL(一)——npoi基础

    去年项目有一个子模块需要解析上百张不一样的excel表格入库,当时用的NPOI,做了很久...也尝试想把代码分享到oschina,结果没坚持两篇就放弃了. 赶巧的是,昨天运营那边提出要录入一些基础数据 ...

随机推荐

  1. Android通知栏介绍与适配总结(上篇)

    此文已由作者黎星授权网易云社区发布. 欢迎访问网易云社区,了解更多网易技术产品运营经验. 由于历史原因,Android在发布之初对通知栏Notification的设计相当简单,而如今面对各式各样的通知 ...

  2. 526. Beautiful Arrangement

    Suppose you have N integers from 1 to N. We define a beautiful arrangement as an array that is const ...

  3. ThinkPHP 3.2.x 集成极光推送指北

    3.2版本已经过了维护生命周期,官方已经不再维护,请及时更新至5.0版本 -- ThinkPHP 官方仓库 以上,如果有条件,请关闭这个页面,然后升级至 ThinkPHP 5,如果由于各种各样的原因无 ...

  4. PyQt5(2)——调整布局(布局管理器)第一个程序

    我们拖拽一个UI文件,转为PY文件后生成一个类Ui_MainWindow 此时,我们新建一个文件,用来控制业务逻辑(继承界面中的类),跟界面分开,这样我们就完成了界面和逻辑相分离(这段代码使用率基本1 ...

  5. 基础篇:6.1)形位公差-要素 Feature

    本章目的:理解形位公差研究的对象-要素,即点.线.面. 1.定义 2.类型 2.1 按存在的状态分 2.2 按结构特征分 2.3 按所处的地位分 2.4  按结构性能分 2.5  按与尺寸关系分

  6. js获取窗口宽度、高度

    1.获取屏幕的高度和宽度(屏幕分辨率): window.screen.height window.screen.width 2.获取屏幕工作区域的高度和宽度(去掉状态栏): window.screen ...

  7. 整理的最全 python常见面试题

      整理的最全 python常见面试题(基本必考)① ②③④⑤⑥⑦⑧⑨⑩ 1.大数据的文件读取: ① 利用生成器generator: ②迭代器进行迭代遍历:for line in file; 2.迭代 ...

  8. 怎么在vue中引入layui

    新项目想用layui框架,学习了把前辈是怎么引入layui的,这里记录下 1.index.html要引入layui.js文件 <script src="/static/layui/la ...

  9. springboot pom.xml文件

    pom.xml文件 <?xml version="1.0" encoding="UTF-8"?> <project xmlns="h ...

  10. STM32的固件升级(RTT

    STM32 通用 Bootloader ,让 OTA 更加 Easy 目前支持F1/F4,在线制作bootloader,准备固件升级,是RTT的云设备管理平台 https://mp.weixin.qq ...