关于PHPExcel,phpexcel
关于PHPExcel,phpexcel
在学PHPExcel的时候,在网上查了很多资料,花了很多时间,下面是我想要分享给大家的,我找到的并进行了一定修改的亲身实践成功的资料,希望大家对大家有所帮助。
首先,需要下载PhpExcel资料,下载资料可以在这里下载,http://download.csdn.net/detail/www122930/9207061
第一,将PHPExcel文件夹,和PHPExcel.php文件放在,一个新建的文件夹Excel中,将Excel文件夹放在,E:\Workspace\PHP\thinkphp2\ThinkPHP\Extend\Vendor,E:\Workspace\PHP\thinkphp2\这一部分是你创建Thinkphp的工作目录。
第二,编写一个ExcelToArray.class.php文件,将它放在E:\Workspace\PHP\thinkphp2\ThinkPHP\Extend\Library\ORG\Util,这个目录下,ExcelToArray.class.php文件的源代码如下:
<?php class ExcelToArray { public function __construct() { Vendor("Excel.PHPExcel");//引入phpexcel类(注意你自己的路径) Vendor("Excel.PHPExcel.IOFactory"); } public function read($filename,$encode,$file_type){ if(strtolower ( $file_type )=='xls')//判断excel表类型为2003还是2007 { Vendor("Excel.PHPExcel.Reader.Excel5"); $objReader = PHPExcel_IOFactory::createReader('Excel5'); }elseif(strtolower ( $file_type )=='xlsx') { Vendor("Excel.PHPExcel.Reader.Excel2007"); $objReader = PHPExcel_IOFactory::createReader('Excel2007'); } $objReader->setReadDataOnly(true); $objPHPExcel = $objReader->load($filename); $objWorksheet = $objPHPExcel->getActiveSheet(); $highestRow = $objWorksheet->getHighestRow(); $highestColumn = $objWorksheet->getHighestColumn(); $highestColumnIndex = PHPExcel_Cell::columnIndexFromString($highestColumn); $excelData = array(); for ($row = 1; $row <= $highestRow; $row++) { for ($col = 0; $col < $highestColumnIndex; $col++) { $excelData[$row][] =(string)$objWorksheet->getCellByColumnAndRow($col, $row)->getValue(); } } return $excelData; } public function push($data,$name='Excel'){ error_reporting(E_ALL); //date_default_timezone_set('Europe/London'); $objPHPExcel = new PHPExcel(); /*以下是一些设置 ,什么作者 标题啊之类的*/ $objPHPExcel->getProperties()->setCreator("转弯的阳光") ->setLastModifiedBy("转弯的阳光") ->setTitle("usertable") ->setSubject("数据EXCEL导出") ->setDescription("备份数据") ->setKeywords("excel") ->setCategory("result file"); // $objPHPExcel->setActiveSheetIndex(0) ->setCellValue('A1', 'username') ->setCellValue('B1', 'password') ->setCellValue('C1', 'sex'); /*以下就是对处理Excel里的数据, 横着取数据,主要是这一步,其他基本都不要改*/ for ($i = 0; $i < count($data) - 1; $i++) { $objPHPExcel->getActiveSheet(0)->setCellValue('A' . ($i + 2), $data[$i]['username']); $objPHPExcel->getActiveSheet(0)->setCellValue('B' . ($i + 2), $data[$i]['password']); $objPHPExcel->getActiveSheet(0)->setCellValue('C' . ($i + 2), $data[$i]['sex']); } $objPHPExcel->getActiveSheet()->setTitle('User'); $objPHPExcel->setActiveSheetIndex(0); ob_end_clean(); //清除缓冲区,避免乱码 header('Content-Type: application/vnd.ms-excel'); header('Content-Disposition: attachment;filename="'.$name.'.xls"'); header('Cache-Control: max-age=0'); $objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5'); $objWriter->save('php://output'); exit; } }
这里有两部分,一部分read function,就是读入Excel中,即将数据库中内容导入到Excel,另一部分,push function,就是讲Excel数据上传到数据库。
第三,创建一个ExcelAction.clsaa.php,在目录E:\Workspace\PHP\thinkphp2\Home\Lib\Action下面,ExcelAction.clsaa.php源代码如下:
<span> 1</span> <?<span>php </span><span> 2</span> <span>class</span> ExcelAction <span>extends</span><span> Action { </span><span> 3</span> <span>public</span> <span>function</span><span> __construct() </span><span> 4</span> <span> { </span><span> 5</span> import('ORG.Util.ExcelToArray');<span>//</span><span>导入excelToArray类</span> <span> 6</span> <span> } </span><span> 7</span> <span> 8</span> <span>public</span> <span>function</span><span> index() </span><span> 9</span> <span> { </span><span>10</span> <span>$this</span>-><span>display(); </span><span>11</span> <span> } </span><span>12</span> <span>public</span> <span>function</span><span> add() </span><span>13</span> <span> { </span><span>14</span> dump(<span>$_FILES</span><span>); </span><span>15</span> <span>16</span> <span>$tmp_file</span> = <span>$_FILES</span> ['file_stu'] ['tmp_name'<span>]; </span><span>17</span> <span>$file_types</span> = <span>explode</span> ( ".", <span>$_FILES</span> ['file_stu'] ['name'<span>] ); </span><span>18</span> <span>$file_type</span> = <span>$file_types</span> [<span>count</span> ( <span>$file_types</span> ) - 1<span>]; </span><span>19</span> <span>20</span> <span>/*</span><span>判别是不是.xls文件,判别是不是excel文件</span><span>*/</span> <span>21</span> <span>if</span> (<span>strtolower</span> ( <span>$file_type</span> ) != "xlsx" && <span>strtolower</span> ( <span>$file_type</span> ) != "xls"<span>) </span><span>22</span> <span> { </span><span>23</span> <span>$this</span>->error ( '不是Excel文件,重新上传'<span> ); </span><span>24</span> <span> } </span><span>25</span> <span>26</span> <span>/*</span><span>设置上传路径</span><span>*/</span> <span>27</span> <span>$savePath</span> = 'E:\Workspace\PHP\thinkphp\Uploads\\'<span>; </span><span>28</span> <span>/*</span><span>以时间来命名上传的文件</span><span>*/</span> <span>29</span> <span>$str</span> = <span>date</span> ( 'Ymdhis'<span> ); </span><span>30</span> <span>$file_name</span> = <span>$str</span> . "." . <span>$file_type</span><span>; </span><span>31</span> <span>32</span> <span>/*</span><span>是否上传成功</span><span>*/</span> <span>33</span> <span>if</span> (! <span>copy</span> ( <span>$tmp_file</span>, <span>$savePath</span> . <span>$file_name</span><span> )) </span><span>34</span> <span> { </span><span>35</span> <span>$this</span>->error ( '上传失败'<span> ); </span><span>36</span> <span> } </span><span>37</span> <span>$ExcelToArray</span>=<span>new</span> ExcelToArray();<span>//</span><span>实例化</span> <span>38</span> <span>$res</span>=<span>$ExcelToArray</span>->read(<span>$savePath</span>.<span>$file_name</span>,"UTF-8",<span>$file_type</span>);<span>//</span><span>传参,判断office2007还是office2003</span> <span>39</span> <span>foreach</span> ( <span>$res</span> <span>as</span> <span>$k</span> => <span>$v</span> ) <span>//</span><span>循环excel表</span> <span>40</span> <span> { <br /> //这一步判断,是为了在Excel内第一行一定是行标题,这里将第一行忽略,直接从第二行读入数据,若没有行标题,则不需要进行if判断,且$k=$k-1; </span><span>41</span> <span>if</span>(<span>$k</span>!=1<span>){ </span><span>42</span> <span>$k</span>=<span>$k</span>-2;<span>//</span><span>addAll方法要求数组必须有0索引</span> <span>43</span> <span>$data</span>[<span>$k</span>]['username'] = <span>$v</span>[0];<span>//</span><span>创建二维数组</span> <span>44</span> <span>$data</span>[<span>$k</span>]['password'] = <span>$v</span>[1<span>]; </span><span>45</span> <span>$data</span>[<span>$k</span>]['sex'] = <span>$v</span> [2<span>]; </span><span>46</span> <span> } </span><span>47</span> <span> } </span><span>48</span> <span>49</span> <span>//</span><span>dump($data[0]);</span> <span>50</span> <span>$kucun</span>=M('User');<span>//</span><span>M方法</span> <span>51</span> <span>$result</span>=<span>$kucun</span>->addAll(<span>$data</span><span>); </span><span>52</span> <span>if</span>(! <span>$result</span><span>) </span><span>53</span> <span> { </span><span>54</span> <span>$this</span>->error('导入数据库失败'<span>); </span><span>55</span> <span>exit</span><span>(); </span><span>56</span> <span> } </span><span>57</span> <span>else</span> <span>58</span> <span> { </span><span>59</span> <span>$this</span>->success ( '导入成功'<span> ); </span><span>60</span> <span> } </span><span>61</span> <span> } </span><span>62</span> <span>63</span> <span>public</span> <span>function</span><span> load(){ </span><span>64</span> <span>$data</span>= M('User')->select(); <span>//</span><span>查出数据</span> <span>65</span> dump(<span>$data</span><span>); </span><span>66</span> <span>$name</span>='Usertable'; <span>//</span><span>生成的Excel文件文件名</span> <span>67</span> <span>$ExcelToArray</span>=<span>new</span> ExcelToArray();<span>//</span><span>实例化</span> <span>68</span> <span>$res</span>=<span>$ExcelToArray</span>->push(<span>$data</span>,<span>$name</span><span>); </span><span>69</span> <span> } </span><span>70</span> }
第四,就是创建相应的模板,在目录E:\Workspace\PHP\thinkphp2\Home\Tpl下,创建Excel文件夹,新建index.html文件,源代码如下:
<span>1</span> <form method="post" action="__APP__/Excel/add" enctype="multipart/form-data"> <span>2</span> <h3 id="导入Excel表">导入Excel表:</h3><input type="file" name="file_stu" /> <span>3</span> <span>4</span> <input type="submit" value="导入" /> <span>5</span> </form> <span>6</span> <form method="post" action="__APP__/Excel/load" enctype="multipart/form-data"> <span>7</span> <input type="submit" value="导出" /> <span>8</span> </form>
最后,只需要进行测试就可以了。
ps,数据库信息如下:
例如:新建数据库thinkphp,建立表user,user表信息如下:
id | username | password | sex |
1 | zs | 123 | 1 |
以上就是使用PhpExcel的全部步骤,谢谢!

热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

AI Hentai Generator
免费生成ai无尽的。

热门文章

热工具

记事本++7.3.1
好用且免费的代码编辑器

SublimeText3汉化版
中文版,非常好用

禅工作室 13.0.1
功能强大的PHP集成开发环境

Dreamweaver CS6
视觉化网页开发工具

SublimeText3 Mac版
神级代码编辑软件(SublimeText3)

热门话题

技嘉的主板怎么设置键盘开机首先,要支持键盘开机,一定是PS2键盘!!设置步骤如下:第一步:开机按Del或者F2进入bios,到bios的Advanced(高级)模式普通主板默认进入主板的EZ(简易)模式,需要按F7切换到高级模式,ROG系列主板默认进入bios的高级模式(我们用简体中文来示范)第二步:选择到——【高级】——【高级电源管理(APM)】第三步:找到选项【由PS2键盘唤醒】第四步:这个选项默认是Disabled(关闭)的,下拉之后可以看到三种不同的设置选择,分别是按【空格键】开机、按组

1.处理器在选择电脑配置时,处理器是至关重要的组件之一。对于玩CS这样的游戏来说,处理器的性能直接影响游戏的流畅度和反应速度。推荐选择IntelCorei5或i7系列的处理器,因为它们具有强大的多核处理能力和高频率,可以轻松应对CS的高要求。2.显卡显卡是游戏性能的重要因素之一。对于射击游戏如CS而言,显卡的性能直接影响游戏画面的清晰度和流畅度。建议选择NVIDIAGeForceGTX系列或AMDRadeonRX系列的显卡,它们具备出色的图形处理能力和高帧率输出,能够提供更好的游戏体验3.内存电

主板上SPDIFOUT连接线序最近我遇到了一个问题,就是关于电线的接线顺序。我上网查了一下,有些资料说1、2、4对应的是out、+5V、接地;而另一些资料则说1、2、4对应的是out、接地、+5V。最好的办法是查看你的主板说明书,如果找不到说明书,你可以使用万用表进行测量。首先找到接地,然后就可以确定其他的接线顺序了。主板vdg怎么接线连接主板的VDG接线时,您需要将VGA连接线的一端插入显示器的VGA接口,另一端插入电脑的显卡VGA接口。请注意,不要将其插入主板的VGA接口。完成连接后,您可以

广联达软件是一家专注于建筑信息化领域的软件公司,其产品被广泛应用于建筑设计、施工、运营等各个环节。由于广联达软件功能复杂、数据量大,对电脑的配置要求较高。本文将从多个方面详细阐述广联达软件的电脑配置推荐,以帮助读者选择适合的电脑配置处理器广联达软件在进行建筑设计、模拟等操作时,需要进行大量的数据计算和处理,因此对处理器的要求较高。推荐选择多核心、高主频的处理器,如英特尔i7系列或AMDRyzen系列。这些处理器具有较强的计算能力和多线程处理能力,能够更好地满足广联达软件的需求。内存内存是影响计算

完全指南:如何使用PHP扩展PHPExcel处理Excel文件引言:在处理大量数据和统计分析时,Excel文件经常被用作数据存储和交换的一种常见格式。使用PHP扩展PHPExcel,我们可以轻松地读取、写入和修改Excel文件,从而有效地处理Excel数据。本文将介绍如何使用PHP扩展PHPExcel来处理Excel文件,并提供代码示例。一、安装PHPExc

随着数字化时代的到来,数据已经成为了我们日常生活和工作中最重要的一部分,而Excel文件则成为数据处理的重要工具之一。相信很多PHP开发者也会在工作中经常遇到使用Excel文件进行数据处理和操作的情况。本文将为大家介绍使用PHPExcel库来处理Excel文件的方法和注意事项。什么是PHPExcel?PHPExcel是一个PHP类

快递是现在很多的用户都会购买到的,有很多的用户比较好奇了要怎么样查看自己的快递到哪里了呢?现在就来看一下小编带来的常见快递查询方法汇总吧。查快递到哪里了怎么查可以通过访问快递100网站(https://www.kuaidi100.com/)来查询快递。在页面中,只需输入快递单号即可完成查询。支付宝查询:进入支付宝页面,找到【我的快递】小程序,输入夸迪单号即可查询。3、微信查询:我们在微信软件中,去搜索【查快递】后在搜索的结果中我们只需要输入快递单号就可以了;

哪个版本的显卡驱动最好用1、没有绝对的最好版本,选择适合自己电脑的版本最重要;2、因为显卡驱动版本的适用性和稳定性与电脑硬件环境和系统的配置有关;3、可以在官网查看电脑和显卡的详细信息,根据信息选择适合的驱动版本,也可以参考其他用户的评价选择。建议在安装驱动之前备份系统,以免出现意外情况。显卡驱动版本472.19系列是非常出色的选择。目前,472版本的驱动兼容性是最优秀的。安装472版本的驱动也能够使显卡发挥出最佳性能。 NVIDIA显卡驱动Win7安装版,编号为2、472.19,是一款质量显着的
