锦芝 發表於 2020-5-6 09:26:00

php 的 PHPExcel1.8.0 使用

<p>PHPExcel是用来操作Office Excel文档的一个PHP类库,它基于微软的OpenXML标准和PHP语言。可以使用它来读取、写入不同格式的Excel表格。</p>
<p>注意:</p>
<p>PHPExcel 已经停止维护了,我现在做的是老项目,老项目php版本较低,而且对性能没太大的要求所以才会使用PHPExcel,如果是新项目最好是用PhpSpreadsheet</p>
<h2 id="下载phpexcel">下载PHPExcel</h2>
<pre><code>https://github.com/PHPOffice/PHPExcel
</code></pre>
<h2 id="phpexcel180-的目录结构">PHPExcel1.8.0 的目录结构</h2>
<p>下载下来目录如下图,我们只需要关注下面几个:</p>
<p><img src="https://img2020.cnblogs.com/blog/1652001/202005/1652001-20200506092501983-1451702117.jpg" alt="2020-04-30_142728" loading="lazy"></p>
<p><strong>Classes:</strong>主要类文件,我们主要是使用这个文件夹</p>
<p><strong>Docmentation :</strong>   文档</p>
<p><strong>Examples :</strong> 例子</p>
<p><strong>composer.json</strong> :主要的配置文件</p>
<h2 id="使用phpexcel的要求">使用PHPExcel的要求</h2>
<p>打开<strong>composer.json</strong> 可以看到所需要的的环境要求</p>
<p><img src="https://img2020.cnblogs.com/blog/1652001/202005/1652001-20200506092501533-1594627667.jpg" alt="2020-04-30_144042" loading="lazy"></p>
<pre><code>必须:
1.PHP版本高于5.2.0
2.mbstring扩展
3.xml扩展
4.xmlwriter扩展
推荐要有:
1.zip扩展
2.gd扩展
</code></pre>
<p>满足php版本高于5.2并且安装了5个扩展后,将classes里的文件拷贝一份放入创建的phpexcel文件夹中,开始使用。</p>
<h2 id="phpexcel基本使用">PHPExcel基本使用</h2>
<h3 id="excel-文件的创建和保存">excel 文件的创建和保存</h3>
<pre><code class="language-php">&lt;?php
//引入PHPExcel文件
require './Classes/PHPExcel.php';

//1.文件的创建
//创建PHPExcel对象
$obj = new PHPExcel();

//写入excel操作
//使用工厂的方式创建excel写入对象
//第二个参数可以写'excel2007'或者 ''Excel5''
// $writer = PHPExcel_IOFactory::createWriter($obj, 'Excel5');
$writer = PHPExcel_IOFactory::createWriter($obj, 'excel2007');
//或如下方式
$writer = new PHPExcel_Writer_Excel5($obj);


//2.文件的保存
//可以保存文件到本地
$writer-&gt;save('1.xls');
//文件名乱码的解决
$filename = iconv('utf-8', 'gbk', '中文.xls');
$writer-&gt;save($filename);

//也可以浏览器输出
header('Content-Type: application/vnd.ms-execl');
header('Content-Disposition: attachment;filename="文件名.xls"');
header('Cache-Control: max-age=0');
$writer-&gt;save('php://output');

//内容乱码问题
//使用浏览器输出时,header头部加上(也就是前面)ob_end_clean();
?&gt;
</code></pre>
<h3 id="操作工作表和设置单元格的值">操作工作表和设置单元格的值</h3>
<pre><code class="language-php">&lt;?php
//引入PHPExcel文件
require './Classes/PHPExcel.php';

//1.文件的创建
//创建PHPExcel对象
$obj = new PHPExcel();

//创建excel文件写入对象
$writer = new PHPExcel_Writer_Excel5($obj);

//操作工作表(worksheet)
//创建工作表方法一
$sheet = new PHPExcel_Worksheet($obj, 'new sheet');
$obj-&gt;addSheet($sheet);
//创建工作表方法二
$obj-&gt;createSheet();

//设置当前工作表,也就是excel从左往右,从0开始
$obj-&gt;setActiveSheetIndex(0);
//得到当前工作表对象
$curSheet = $obj-&gt;getActiveSheet();
//往工作表中插入数据

//设置单元格的值
$curSheet-&gt;setCellValue('A1', '10');
$curSheet-&gt;setCellValue('A2', '20');
$curSheet-&gt;setCellValue('A3', '=sum(A1:A2)');

ob_end_clean();
//浏览器输出
header('Content-Type: application/vnd.ms-execl');
header('Content-Disposition: attachment;filename="测试写入单元格.xls"');
header('Cache-Control: max-age=0');
$writer-&gt;save('php://output');

?&gt;
</code></pre>
<p>效果如下图:</p>
<p><img src="https://img2020.cnblogs.com/blog/1652001/202005/1652001-20200506092501040-1832776821.jpg" alt="2020-04-30_160724" loading="lazy"></p>
<h3 id="设置样式">设置样式</h3>
<pre><code class="language-PHP">&lt;?php
//引入PHPExcel文件
require './Classes/PHPExcel.php';

//1.文件的创建
//创建PHPExcel对象
$obj = new PHPExcel();

//创建excel文件写入对象
$writer = new PHPExcel_Writer_Excel5($obj);

//操作工作表(worksheet)
//创建工作表方法一
$sheet = new PHPExcel_Worksheet($obj, 'new sheet');
$obj-&gt;addSheet($sheet);
//创建工作表方法二
$obj-&gt;createSheet();

//设置当前工作表,也就是excel从左往右,从0开始
$obj-&gt;setActiveSheetIndex(0);
//得到当前工作表对象
$curSheet = $obj-&gt;getActiveSheet();
//往工作表中插入数据
//设置单元格的值
$curSheet-&gt;setCellValue('A1', '10');
$curSheet-&gt;setCellValue('A2', '20');
$curSheet-&gt;setCellValue('A3', '=sum(A1:A2)');

//设置样式
//加粗
$curSheet-&gt;getStyle('A1')-&gt;getFont()-&gt;setBold(true);
//斜体
$curSheet-&gt;getStyle('A1')-&gt;getFont()-&gt;setItalic(true);
//字体颜色
$curSheet-&gt;getStyle('A1')-&gt;getFont()-&gt;
setColor(new PHPExcel_Style_Color(PHPExcel_Style_Color::COLOR_DARKGREEN));
//字体
$curSheet-&gt;getStyle('A1')-&gt;getFont()-&gt;setName('宋体');
//字体大小
$curSheet-&gt;getStyle('A1')-&gt;getFont()-&gt;setSize(20);
//设置列宽
$curSheet-&gt;getColumnDimension('A')-&gt;setWidth(20);
$curSheet-&gt;getColumnDimension('A')-&gt;setAutoSize(true);
//设置行高
$curSheet-&gt;getRowDimension('1')-&gt;setRowHeight(20);
//设置边框
$curSheet-&gt;getStyle('A1')-&gt;getBorders()-&gt;getTop()
-&gt;setBorderStyle(PHPExcel_Style_Border::BORDER_THIN);
//设置边框颜色
$curSheet-&gt;getStyle('A1')-&gt;getBorders()-&gt;getTop()-&gt;getColor()-&gt;setARGB('FF336600');
//设置填充色
$curSheet-&gt;getStyle('A1')-&gt;getFill()-&gt;setFillType(PHPExcel_Style_Fill::FILL_SOLID);
$curSheet-&gt;getStyle('A1')-&gt;getFill()-&gt;getStartColor()-&gt;setARGB('FFFF0000');

ob_end_clean();
//浏览器输出
header('Content-Type: application/vnd.ms-execl');
header('Content-Disposition: attachment;filename="测试设置样式.xls"');
header('Cache-Control: max-age=0');
$writer-&gt;save('php://output');

?&gt;
</code></pre>
<p>效果如下图:</p>
<p><img src="https://img2020.cnblogs.com/blog/1652001/202005/1652001-20200506092500756-1455326759.jpg" alt="2020-04-30_161507" loading="lazy"></p>
<h3 id="单元格的合并多行多列合并插入行删除行插入列删除列">单元格的合并、多行多列合并、插入行、删除行、插入列、删除列</h3>
<pre><code class="language-php">&lt;?php
//引入PHPExcel文件
require './Classes/PHPExcel.php';

//1.文件的创建
//创建PHPExcel对象
$obj = new PHPExcel();

//创建excel文件写入对象
$writer = new PHPExcel_Writer_Excel5($obj);

//操作工作表(worksheet)
//创建工作表方法一
$sheet = new PHPExcel_Worksheet($obj, 'new sheet');
$obj-&gt;addSheet($sheet);
//创建工作表方法二
$obj-&gt;createSheet();

//设置当前工作表,也就是excel从左往右,从0开始
$obj-&gt;setActiveSheetIndex(0);
//得到当前工作表对象
$curSheet = $obj-&gt;getActiveSheet();
//往工作表中插入数据

//设置单元格的值
$curSheet-&gt;setCellValue('A1', '10');
$curSheet-&gt;setCellValue('A2', '20');
$curSheet-&gt;setCellValue('A3', '=sum(A1:A2)');

//单元格的合并
$curSheet-&gt;mergeCells('A1:A3');
//多行多列合并
$col1 = 2;//第三列
$row1 = 2;//第三行
$col2 = 3;//第四列
$row2 = 3;//第四行
$curSheet-&gt;mergeCellsByColumnAndRow($col1,$row1,$col2,$row2);
//插入一行(在before之前插入$rowNums行)
$curSheet-&gt;insertNewRowBefore($before=1, $rowNums=1);
//删除行(从row开始删除$rowNums行)
$curSheet-&gt;removeRow($row=1,$rowNums=1);
//插入列(在before之前添加$colNums列)
$curSheet-&gt;insertNewColumnBefore($before='A', $colNums=1);
//删除列(从col开始删除$colNums列)
$curSheet-&gt;removeColumn($col='A', $colNums);

ob_end_clean();
//浏览器输出
header('Content-Type: application/vnd.ms-execl');
header('Content-Disposition: attachment;filename="测试合并-插入-删除.xls"');
header('Cache-Control: max-age=0');
$writer-&gt;save('php://output');

?&gt;
</code></pre>
<p>效果如下图:</p>
<p><img src="https://img2020.cnblogs.com/blog/1652001/202005/1652001-20200506092500384-1816609272.jpg" alt="2020-04-30_163209" loading="lazy"></p>
<h3 id="插入图片">插入图片</h3>
<pre><code class="language-php">&lt;?php
//引入PHPExcel文件
require './Classes/PHPExcel.php';

//1.文件的创建
//创建PHPExcel对象
$obj = new PHPExcel();

//创建excel文件写入对象
$writer = new PHPExcel_Writer_Excel5($obj);

//操作工作表(worksheet)
//创建工作表方法一
$sheet = new PHPExcel_Worksheet($obj, 'new sheet');
$obj-&gt;addSheet($sheet);
//创建工作表方法二
$obj-&gt;createSheet();

//设置当前工作表,也就是excel从左往右,从0开始
$obj-&gt;setActiveSheetIndex(0);
//得到当前工作表对象
$curSheet = $obj-&gt;getActiveSheet();
//往工作表中插入数据

//插入图片
// 1、创建图片操作对象
$img = new PHPExcel_Worksheet_Drawing();
// 2、设置图片路径
$img-&gt;setPath("./1.jpg");
// 3、设置图片宽高
$img-&gt;setWidth(533);
$img-&gt;setHeight(533);
// 4、设置图片插入位置
$img-&gt;setCoordinates('A1');
// 5、设置图片偏移量
$img-&gt;setOffsetX(100);
// 6、设置图片倾斜
$img-&gt;setRotation(25);
// 7、添加到工作表
$img-&gt;setWorksheet($curSheet);

ob_end_clean();
//浏览器输出
header('Content-Type: application/vnd.ms-execl');
header('Content-Disposition: attachment;filename="测试插入图片.xls"');
header('Cache-Control: max-age=0');
$writer-&gt;save('php://output');

?&gt;
</code></pre>
<p>效果如下图:</p>
<p><img src="https://img2020.cnblogs.com/blog/1652001/202005/1652001-20200506092500031-1700280056.jpg" alt="2020-04-30_164006" loading="lazy"></p>
<h3 id="读取excel相关的操作函数">读取excel相关的操作函数</h3>
<pre><code class="language-php">//创建excel读对象
$reader = PHPExcel_IOFactory::createReader('Excel5');
//or
$reader = new PHPExcel_Reader_Excel5();
//得到excel操作对象
$excel = PHPExcel_IOFactory::load(excel路径);
//or
$excel = $reader-&gt;load(excel路径);

//获取表的相应数据

//获取工作表数量
$excel-&gt;getSheetCount();

//获取工作表名
$excel-&gt;getSheetNames();

//根据表名切换当前工作表
$excel-&gt;setActiveSheetIndexByName();

//获取整个内容返回数组
$excel-&gt;getActiveSheet()-&gt;toArray();

//通过reader对象获取excel表的信息
$reader-&gt;listWorkSheetInfo(路径);
$reader-&gt;listWorkSheetNames(路径);

//获取当前工作表最大行数
$excel-&gt;getActiveSheet()-&gt;getHighestRow();
//获取当前工作表最大列数
$excel-&gt;getActiveSheet()-&gt;getHighestColumn();

//获取单个单元格内容
$curSheet-&gt;getCell('A1')-&gt;getValue();
</code></pre>
<h3 id="循环读取excel中所有sheet数据">循环读取excel中所有Sheet数据</h3>
<p>先准备数据:</p>
<p>Sheet1:</p>
<p><img src="https://img2020.cnblogs.com/blog/1652001/202005/1652001-20200506092459666-1187235813.jpg" alt="2020-04-30_170050" loading="lazy"></p>
<p>Sheet2:</p>
<p><img src="https://img2020.cnblogs.com/blog/1652001/202005/1652001-20200506092459314-1670675943.jpg" alt="2020-04-30_170122" loading="lazy"></p>
<p>循环读取示例:</p>
<pre><code class="language-php">&lt;?php
//引入PHPExcel文件
require './Classes/PHPExcel.php';

//创建excel读对象
$reader = PHPExcel_IOFactory::createReader('Excel5');
//得到excel操作对象
$excel = PHPExcel_IOFactory::load('./test.xls');

//放入数组
$data = array();

//获取所有工作表名
$SheetNamas = $excel-&gt;getSheetNames();
//遍历工作表
for($i = 0; $i &lt; count($SheetNamas); $i++){
    //获取当前工作表名
    $SheetName = $SheetNamas[$i];
    //根据表名切换当前工作表
    $excel-&gt;setActiveSheetIndexByName($SheetName);
    //得到当前工作表对象
    $curSheet = $excel-&gt;getActiveSheet();
    //获取当前工作表最大行数
    $rows = $curSheet-&gt;getHighestRow();
    //获取当前工作表最大列数,返回的是最大的列名,如:B
    $cols = $curSheet-&gt;getHighestColumn();

    //将当前工作表名当键,内容为值存入数组
    $data[$SheetName] = array();

    //大写字母A的ASCII值是65 A-Z对应65-90
    for($j = 'A'; $j &lt;= $cols; $j++ ){
      for($k = 1; $k &lt;= $rows; $k++){
            $key = $j.$k;
            $value = $curSheet-&gt;getCell($key)-&gt;getValue();
            $data[$SheetName][$key] = $value;
      }
    }

}
echo json_encode($data);
?&gt;
</code></pre>
<p>数据如下图:</p>
<p><img src="https://img2020.cnblogs.com/blog/1652001/202005/1652001-20200506092458878-1005449340.jpg" alt="2020-04-30_175542" loading="lazy"></p>
<h3 id="读取excel大批量转换成sql">读取excel大批量转换成sql</h3>
<h4 id="生成大批量的excel数据">生成大批量的excel数据</h4>
<pre><code class="language-php">&lt;?php
set_time_limit(0);

//引入PHPExcel文件
require './Classes/PHPExcel.php';

$start = microtime(true);
$excel = new PHPExcel();
$writer = PHPExcel_IOFactory::createWriter($excel, 'Excel5');
$curSheet = $excel-&gt;getActiveSheet();

$rows = 10000;
$cols = range('A', 'M');

for($i = 1; $i &lt;= $rows; ++$i) {
    foreach($cols as $col) {
      $cellName = $col . $i;
      $curSheet-&gt;setCellValue($cellName, uniqid(mt_rand(), true));
    }
}

$writer-&gt;save('./data.xls');
$end = microtime(true);
echo $end - $start;
?&gt;
</code></pre>
<h4 id="批量转化成sql">批量转化成sql</h4>
<pre><code class="language-php">&lt;?php
set_time_limit(60);
ini_set("memory_limit", "128M");

//引入PHPExcel文件
require './Classes/PHPExcel.php';

$start = microtime(true);

$cacheMethod = PHPExcel_CachedObjectStorageFactory::cache_in_memory_gzip;
$cacheSettings = array();
PHPExcel_Settings::setCacheStorageMethod($cacheMethod, $cacheSettings);

//加载excel文件
$excel = PHPExcel_IOFactory::load('./data.xls');
$curSheet = $excel-&gt;getActiveSheet();

//sql文件保存路径
$sqlFile = dirname(__FILE__) . '/data.sql';
$fp = fopen($sqlFile, 'ab+');

$rows = $curSheet-&gt;getHighestRow();
$cols = $curSheet-&gt;getHighestColumn();

//将列名转为列数
$cols = PHPExcel_Cell::columnIndexFromString($cols);

for($i = 1; $i &lt;= $rows; ++$i) {
    $rowStr = "INSERT INTO `test` VALUES(NULL,";
    for($j = 0; $j &lt; $cols; ++$j) {

      //将列数转换为列名
      $cellName = PHPExcel_Cell::stringFromColumnIndex($j) . $i;
      $cellValue = $curSheet-&gt;getCell($cellName)-&gt;getValue();
      $cellValue = iconv('GBK', 'UTF-8', $cellValue);
      $rowStr .= "'{$cellValue}',";
    }
    $rowStr = rtrim($rowStr, ",") . ");\r\n";
    fwrite($fp, $rowStr);
}
fclose($fp);


$end = microtime(true);
echo $end - $start;
</code></pre>
<h2 id="主要的几个类库和api">主要的几个类库和API</h2>
<pre><code class="language-php">(1)PHPExcel:工作簿对象

    excel文档处理对象主要用来管理我们的excel文档,怎么来管理(通过属性和方法来管理)?大家知道,类主要是由属性和方法来组成,通过php程序的手段来管理excel文档,其实就是通过本对象的属性和方法来管理,下面我们就来看一下PHPExcel类中都有那些属性和方法,这些属性和方法主要用来管理excel文档的那些方面
   
    getProperties():获得当前活动状态工作表的属性对象,返回属性对象
    getActiveSheet():获得当前活动状态的工作表,返回工作表对象
    getActiveSheetIndex():获得当前活动状态工作表的索引值,返回int
    setActiveSheetIndex():设置当前活动状态工作表的索引,返回工作表对象
    getSheetByName():通过工作表名称得到当前工作表对象,返回工作表对象
    getDefaultStyle():获得excel文档默认的样式(所有工作表的样式),返回样式对象
    createSheet():在当前活动工作表后创建一个新的工作表
    getSheetCount():获得excel文档中工作表的数量,返回int
    getSheetNames():获得excel文档中所有工作表名称组成的数组
   
(2)PHPExcel_Worksheet:工作表对象

    工作表对象,主要用来管理我们的工作表,怎么管理?也是通过属性和方法来管理,但是工作表对象大部分情况下可通过excel文档对象来获取


    toArray():把工作表中的数据转换成数组
    fromArray():从数组中获取数据填充到工作表,返回工作表对象
    getCell():获得单元格对象
    getCellByColumnAndRow():通过列索引和行索引获得指定单元格,返回单元格对象
    getDefaultStyle():获得工作表默认的样式,返回样式对象
    getHighestColumn():获得工作表的最大列,返回列的名称
    getColumnDimension():获得当前列
    getStyle():获得指定单元格的样式,返回样式对象
    getParent():获得父类对象,返回excel文档对象
    getTitle():获得工作表的标题或名称,返回字符串类型
    setCellValue():设置单元格的值,返回工作表对象或单元格对象,完全取决于参数的值
    setCellValueByColumnAndRow():通过列索引和行索引设置单元格的值,返回类型同上
    setCellValueExplicit():设置单元格的值,并显示指定数据类型,返回工作表对象
    setCellValueExplicitByColumnAndRow():通过列和行索引设置单元格值
    setTitle():设置工作表标题

(3)PHPExcel_Cell:单元格对象
      
(3)PHPExcel_Style:样式对象,主要用来设置单元格的样式:对齐方式、字体、边框、填充等,跟我们之前学过的css样式差不多,在这里如果想要设置对齐方式、字体大小、边框颜色、等等都是通过样式对象来完成的
   
    getActiveCell():获得当前活动的单元格的名称,返回string;如,A1
    getActiveSheet():获得当前活动的工作表,返回工作表对象
    getAlignment():获得对齐方式对象,返回对齐方式对象
    getBorders():获得边框对象,返回边框对象
    getFill():获得填充对象
    getFont():获得字体对象
    setFont():设置字体,返回样式对象

(3)PHPExcel_Style_Alignment:对齐方式对象

   
    getHorizontal():获得水平居中方式
    getVertical():获得垂直居中方式
    setHorizontal():设置水平居中方式,返回对齐方式对象
    setVertical():设置垂直居中方式,返回对齐方式对象

    居中方式:
      HORIZONTAL_CENTER
      HORIZONTAL_CENTER_CONTINUOUS
      HORIZONTAL_GENERAL
      HORIZONTAL_JUSTIFY
      HORIZONTAL_LEFT
      HORIZONTAL_RIGHT
      VERTICAL_BOTTOM
      VERTICAL_CENTER
      VERTICAL_JUSTIFY
      VERTICAL_TOP

(3)PHPExcel_Style_Font:字体对象

    setBold():设置字体加粗
    setColor():设置字体颜色
    setItalic():设置字体倾斜
    setName():设置字体名
    setSize():设置字体大小
    setUnderline():设置字体下划线

(4)PHPExcel_Writer_Excel5:写操作对象,主要用来输出xls文件

    save(工作簿文件名):将工作簿对象中的数据保存到一个工作簿文件中

(4)PHPExcel_Writer_Excel2007:写操作对象,主要用于输出xlsx文件

    save(工作簿文件名):将工作簿对象中的数据保存到一个工作簿文件中

(5)PHPExcel_Reader_Excel5:读操作对象,主要用于输入xls文件
   
    canRead():当前reader对象是否能够读工作簿文件
    load():从一个工作簿文件中加载工作簿对象,也就是将工作簿文件中的数据加载到工作簿对象中来管理

(6)PHPExcel_IOFactory:读写操作对象

    createReader():根据参数的不同,创建不同的读对象:主要作用是读取工作簿文件中的数据

    createWriter():根据参数的不同,返回不同的写对象:主要作用是将PHPExcel工作簿对象中的数据写入到一个工作簿文件中

    load():从工作簿文件中加载PHPExcel工作簿对象,即:将工作簿文件中数据加载到PHPExcel工作簿对象中来管理


PHPExcel对象:是一个工作簿对象

include_once "PHPExcel/Writer/Excel5.php";//主要用于其它低版本,且文件名后缀为xls的文件,如果我们希望生成后缀名为xls格式的excel文件,建议引入此类库

include_once "PHPExcel/Writer/Excel2007.php";//主要用于excel2007格式,文件名后缀为xlsx的excel文件,如果我们希望生成后缀名为xlsx格式的excel文件,建议引入此类库

$objWriter = new PHPExcel_Writer_Excel5($objExcel);//创建一个文件格式写入对象实例,此对象主要用来写入内容到指定格式的文件,如,写入内容到后缀名为xls格式的excel文件等,用于其它板式的格式

$objWriter = new PHPExcel_Writer_Excel2007($objExcel);//创建一个文件格式写入对象实例,此对象主要用来写入内容到指定格式的文件,如,写入内容到后缀名为xls格式的excel文件等,用于excel2007格式
$objWriter-&gt;setOffice2003Compatibility(true);//兼容office2003


//设置文档基本属性
$objProps = $objExcel-&gt;getProperties();//得到PHPExcel_document文档对象
$objProps-&gt;setCreator("Zeal Li");       //设置作者
$objProps-&gt;setLastModifiedBy("Zeal Li"); //设置最后修改时间
$objProps-&gt;setTitle("Office XLS Test Document"); //设置标题
$objProps-&gt;setSubject("Office XLS Test Document, Demo");//设置主题
$objProps-&gt;setDescription("Test document, generated by PHPExcel.");//描
$objProps-&gt;setKeywords("office excel PHPExcel"); //关键字
$objProps-&gt;setCategory("Test"); //分类


$objExcel-&gt;setActiveSheetIndex(0);//设置用户打开excel文件时,看到的首张sheet,如果没有设置,默认为最后一次操作的sheet

$objActSheet-&gt;setTitle('测试Sheet');//设置当前活动的工作簿名称


//根据单元格名称设置单元格内容,由PHPExcel根据传入的内容自动判断单元格的内容类型
$objActSheet-&gt;setCellValue('A1', '字符串内容');// 字符串内容
$objActSheet-&gt;setCellValue('A2', 26);            // 数值
$objActSheet-&gt;setCellValue('A3', true);          // 布尔值
$objActSheet-&gt;setCellValue('A4', '=SUM(A2:A2)'); // 公式

/显式指定单元格的内容类型为字符串类型
$objActSheet-&gt;setCellValueExplicit('A5','847475847857487584',PHPExcel_Cell_DataType::TYPE_STRING);

//合并单元格
$objActSheet-&gt;mergeCells('B1:C22');


//设置列的宽度
$objActSheet-&gt;getColumnDimension('B')-&gt;setAutoSize(true);
$objActSheet-&gt;getColumnDimension('A')-&gt;setWidth(30);

//设置行的高度
$objPHPExcel-&gt;getActiveSheet()-&gt;getRowDimension('2')-&gt;setRowHeight(11.5);


//格式:主要用来对单元格进行操作,如,设置字体、设置对齐方式、设置边框等
$objStyleA5 = $objActSheet-&gt;getStyle('A5');//获取A5单元格的样式

//设置单元格的字体
$objFontA5 = $objStyleA5-&gt;getFont(); //获得字体
$objFontA5-&gt;setName('宋体');//设置字体名称
$objFontA5-&gt;setSize(10);//设置字体大小
$objFontA5-&gt;setBold(true);//设置字体加粗
$objFontA5-&gt;getColor()-&gt;setARGB('FF999999');//设置字体颜色

//设置单元格的对齐方式
$objAlignA5 = $objStyleA5-&gt;getAlignment();//获得对齐方式
$objAlignA5-&gt;setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_RIGHT);//水平居右
$objAlignA5-&gt;setVertical(PHPExcel_Style_Alignment::VERTICAL_CENTER);//垂直居中

//设置单元格的边框
$objBorderA5 = $objStyleA5-&gt;getBorders();//获取边框
$objBorderA5-&gt;getTop()-&gt;setBorderStyle(PHPExcel_Style_Border::BORDER_THIN);//边框样式
$objBorderA5-&gt;getTop()-&gt;getColor()-&gt;setARGB('FFFF0000');//顶部边框的颜色
$objBorderA5-&gt;getBottom()-&gt;setBorderStyle(PHPExcel_Style_Border::BORDER_THIN);
$objBorderA5-&gt;getLeft()-&gt;setBorderStyle(PHPExcel_Style_Border::BORDER_THIN);//左样式
$objBorderA5-&gt;getRight()-&gt;setBorderStyle(PHPExcel_Style_Border::BORDER_THIN);//右样式

//设置单元格的填充色
$objFillA5 = $objStyleA5-&gt;getFill();//填充
$objFillA5-&gt;setFillType(PHPExcel_Style_Fill::FILL_SOLID);//填充类型
$objFillA5-&gt;getStartColor()-&gt;setARGB('FFEEEEEE');

//计算单元格的值
$objPHPExcel-&gt;getActiveSheet()-&gt;setCellValue('B7', '=SUM(B5:C5)');
$objPHPExcel-&gt;getActiveSheet()-&gt;getCell('B7')-&gt;getCalculatedValue();
//如果要获取单元格的一个值,首先需要通过工作表的getCell方法获取到一个单元格对象,然后再通过单元格对象的getValue方法得到单元格的值,如果单元格的值是通过计算得到的,则需要使用getCalculatedValue方法获取单元格的值,设置单元格的值,我们只需要通过工作表的setCellValue方法来设置即可


//$dateTimeNow=time();
$objPHPExcel-&gt;getActiveSheet()-&gt;setCellValue('C10', PHPExcel_Shared_Date::PHPToExcel( $dateTimeNow ));//41105.75

$objPHPExcel-&gt;getActiveSheet()-&gt;getStyle('C10')-&gt;getNumberFormat()-&gt;setFormatCode(PHPExcel_Style_NumberFormat::FORMAT_DATE_TIME4);//18:00:54,只是换了一种显示方式,并不会改变原来值的类型

echo gettype($objPHPExcel-&gt;getActiveSheet()-&gt;getCell('C10')-&gt;getValue());//double
echo $objPHPExcel-&gt;getActiveSheet()-&gt;getCell('C10')-&gt;getValue();//41105.75

//'2010-10-21'一定要放在引号中,否则显示的值为,1979               文本(推荐)
$objPHPExcel-&gt;setActiveSheetIndex(0)-&gt;setCellValueExplicit("D1", '2010-10-21', PHPExcel_Cell_DataType::TYPE_STRING); //特征:字符串类型都是居左显示

//添加一个新的worksheet
$objExcel-&gt;createSheet();//创建一个新的工作表
$objExcel-&gt;getSheet(1)-&gt;setTitle('测试2');//设置当前工作表的标题

//保护单元格
$objExcel-&gt;getSheet(1)-&gt;getProtection()-&gt;setSheet(true);
$objExcel-&gt;getSheet(1)-&gt;protectCells('A1:C22', 'PHPExcel');

//输出内容到excel文件,并将文件保存在服务器上
$objWriter-&gt;save("test.xls");

//强制输出内容到浏览器下载
header("Content-Type: application/force-download");
header("Content-Type: application/octet-stream");
header("Content-Type: application/download");
header('Content-Disposition:inline;filename="'.$outputFileName.'"');
header("Content-Transfer-Encoding: binary");
header("Expires: Mon, 26 Jul 1997 05:00:00 GMT");
header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT");
header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
header("Pragma: no-cache");
$objWriter-&gt;save('php://output');//参数-表示直接输出到浏览器,供客户端下载

//excel读取对象
$PHPReader = new PHPExcel_Reader_Excel5();//创建一个excel文件的读取对象
$PHPExcel = $PHPReader-&gt;load($filePath);//读取一张excel表,返回excel文件对象
$currentSheet = $PHPExcel-&gt;getSheet(0);//读取excel文件中的第一张工作表
$allColumn = $currentSheet-&gt;getHighestColumn();//取得当前工作表最大的列号,如,E
$allRow = $currentSheet-&gt;getHighestRow();//取得当前工作表一共有多少行

//设置工作簿默认的样式
$objPHPExcel-&gt;getDefaultStyle()-&gt;getFont()-&gt;setName('Arial');
$objPHPExcel-&gt;getDefaultStyle()-&gt;getFont()-&gt;setSize(8);

//合并单元格
$objPHPExcel-&gt;getActiveSheet()-&gt;mergeCells('A18:E22');
</code></pre><br><br>
来源:https://www.cnblogs.com/makalochen/p/12834440.html
頁: [1]
查看完整版本: php 的 PHPExcel1.8.0 使用