哈咯,下午好,又是1星期周五,这周的工作和学习怎么样呢?
↓↓↓是不是有人要说↓↓↓
不不不,相信大众都在期待周末元旦了吧!
什么?你已然思绪飘到远方,迫不及待了?
别急,身为IT技术或想从事IT技术的你,先来学一下PHP吧!
让今天充满学习能量,而后在元旦好好放松一下,工作、学习、生活三不误!(本文纯手打,写了好几天了,代码倘若有错能够告诉我)
今天将重点介绍PHP的研发环境、用途和优良,以及PHP Spreadsheet的用途、运用和实质操作。毕竟连Facebook都在用php,你还什么理由不消?
1.什么是PHP以及PHP Spreadsheet
PHP,全叫作 Hypertext Preprocessor ,中文翻译“超文本预处理器”。PHP内核由C研发,因此呢在语法上跟C有不少类似之处。但PHP绝对不是C。PHP语法除了跟C有类似之处外,还跟Java、Perl比较流行的编程语言存在类似的地区。因此呢,倘若你有以上语言基本,PHP入门会更加快速。
在PHP的官网是这般介绍PHP的:
PHP is a popular general-purpose scripting language that is especially suited to web development.
Fast, flexible and pragmatic, PHP powers everything from your blog to the most popular websites in the world.
翻译过来,大致意思便是:
PHP是一种开源通用脚本语语言,并且已然被广泛应用,尤其适用于 Web 研发。
持有快速,灵活,实用的特点,PHP能做任何事,包含你的个人博客乃至是全世界性的大型站点系统。
PHP能干任何事!
(1)PHP能直接嵌入HTML语言中,与HTML混编。PHP研发的目的重点是准许 web 研发人员快速编写动态生成的 web 页面,但 PHP 的用途远不只于此。
(2)PHP还包括了命令列执行接口(command line interface),和产生图形运用者接口(GUI)程式。
PHP优良非常多!
(1)PHP开源免费,无任何收费的项目。还能够商场运用(你只要改一下内核就能够商用了)
(2)PHP的研发组件非常非常非常丰富
(3)社区非常成熟,你在社区能处理百分之85的问题,虽然还没达到电脑关机能处理百分之99的问题,但已然很给力了。
(4)PHP学习成本非常非常低,见效快,学1个月基本能入门(某门语言要学就得三件套)
(5)开源库丰富,基本所有类型均有开源制品
(6)PHP7.0基本不输任何一门语言,这是重点
(7)与MySQL近乎完美的支持
(8)找工作比较容易(这个个人有有些见解:①没什么人学,就没什么人竞争 ②由于国内大厂都用了java,因此非常多培训公司以此来做噱头,引起跟风的人非常多,基本全去搞java教育了 ③亦可能PHP入门很简单,没什么好割菜的,因此不教。PS:个人观点,仅供参考)
而PhpSpreadsheet是一个纯PHP编写的组件库,它运用现代PHP写法,代码质量和性能比PHPExcel,高不少,完全能够替代PHPExcel(PHPExcel已再也不守护)。运用PhpSpreadsheet能够容易读取和写入Excel文档,支持Excel的所有操作。因此今天先挑这个来讲。
2.PhpSpreadsheet特性
(1)支持读取.xls,.xlsx,.html,.csv等格式文件,支持写入导出.xls,.xlsx,.html,.csv,.pdf格式文件。
(2)供给丰富的API,供给单元格样式设置、Excel表格属性设置、图表设置等等许多功能。运用PhpSpreadsheet完全能够生成一个外观结构都满足你的Excel表格文件。
(3)卓越的性能,尤其在PHP7上表现优异,比PHPExcel强大非常多。
3.安装安排
(1)软件依赖
要运用PhpSpreadsheet需要满足以下要求:
PHP5.6或更改版本,举荐PHP7
支持php_zip扩展
支持php_xml扩展
支持php_gd2扩展
(2)安排composer
Wondows平台上,咱们只需要下载Composer-Setup.exe后,一步步安装就可。
需要重视的是你需要开启openssl配置,咱们打开php目录下的php.ini,将extension=php_openssl.dll前面的分号去掉就能够了。
安装成功后,咱们能够经过命令窗口(cmd)输入composer--version命令来查看是不是安装成功。
接下来咱们能够更改阿里云Composer全量镜像: composer config -g repo.packagist composerhttps://mirrors.aliyun.com/composer/
倘若要取消配置: composer config -g --unset repos.packagist
(3)安装spreadsheet
cmd进入自己的工作文件夹,安装Phpspreadsheet,运行命令
运行完成之后,你的文件目录就多了“vendor”文件夹以及“composer.json”、“composer.lock”文件。
4、运用
例子1.
试运行个例子,在工作文件根目录下创建个test.php,写入以下代码: <?php//引入phpspreadsheet自动加载文件require vendor/autoload.php;//引入spreadsheet和xlsx类use PhpOffice\PhpSpreadsheet\Spreadsheet;use PhpOffice\PhpSpreadsheet\Writer\Xlsx;$spreadsheet = new Spreadsheet();//新建个spreadsheet对象$sheet = $spreadsheet->getActiveSheet();$sheet->setCellValue(A1, Welcome to Helloweba.);//设置A1表格的内容为“Welcome to Helloweba.”$writer = newXlsx($spreadsheet);$writer->save(hello.xlsx);//保留为hello.xlsx文件
例子2.运用PhpSpreadsheet将Excel导入到MySQL数据库
(1)新建个测试表格score.xlsx,内容如下:
(2)在数据库中新建个test数据库,新建个score分数表,代码如下: CREATE TABLE score (`id` int(11) unsigned NOT NULL AUTO_INCREMENT,`name` varchar(32) NOT NULL COMMENT 姓名,`chinese` int(6) NOT NULL DEFAULT 0 COMMENT 语文,`maths` int(6) NOT NULL DEFAULT 0 COMMENT 数学,`english` int(6) NOT NULL DEFAULT 0 COMMENT 外语,PRIMARY KEY (`id`)) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;
(3)新建个数据库连接的设置文件conn.php,代码如下: <?php$db=mysqli_connect("host","username","password","database",port);
(4)思路:运用PhpSpreadsheet读取Excel表格中的有用信息,而后组装成sql语句,最后批量插进到MySQL表中,代码如下: require vendor/autoload.php;include(conn.php); //连接数据库$reader = \PhpOffice\PhpSpreadsheet\IOFactory::createReader(Xlsx);$reader->setReadDataOnly(TRUE);$spreadsheet = $reader->load(score.xlsx); //载入excel表格$worksheet = $spreadsheet->getActiveSheet();$highestRow = $worksheet->getHighestRow(); // 总行数$highestColumn = $worksheet->getHighestColumn();// 总列数$highestColumnIndex =\PhpOffice\PhpSpreadsheet\Cell\Coordinate::columnIndexFromString($highestColumn); // e.g. 5$lines = $highestRow - 2;if ($lines <= 0) {exit(Excel表格中无数据);}$sql = "INSERT INTO score(`name`, `chinese`, `maths`, `english`) VALUES ";for ($row = 3; $row <= $highestRow; ++$row) {$name = $worksheet->getCellByColumnAndRow(1, $row)->getValue(); //姓名$chinese = $worksheet->getCellByColumnAndRow(2, $row)->getValue();//语文$maths = $worksheet->getCellByColumnAndRow(3, $row)->getValue(); //数学$english = $worksheet->getCellByColumnAndRow(4, $row)->getValue(); //外语$sql .= "($name,$chinese,$maths,$english),";}$sql = rtrim($sql, ","); //去掉最后一个,号try {$db->query($sql);echo OK;} catch (Exception $e) {echo $e->getMessage();}
(5)这条指令能够获取表格中任意单元格数据内容,$col暗示单元格所在的列,以数字暗示,A列暗示第1列,$row暗示所在的行。 $worksheet->getCellByColumnAndRow($col,$row)->getValue()
例子3.PhpSpreadsheet 读取excel文件
代码如下: <?php require vendor/autoload.php; use \PhpOffice\PhpSpreadsheet\IOFactory; class Vcard{ public function index(){ $file_name = "1"; $uploadwork = "./";$uploadfile = $uploadwork . $file_name ..xlsx; // 按照表格格式选取Xlsx、Xls、Xml、Ods、Slk、Gnumeric、Html、Csv$reader = IOFactory::createReader(Xlsx); //按文件格式,填入区别的格式字段,重视区分体积写$PHPExcel = $reader->load($uploadfile); // 载入excel文件$sheet = $PHPExcel->getSheet(0); // 读取第1個工作表$highestRow = $sheet->getHighestRow(); // 取得总行数$highestColumm = $sheet->getHighestColumn();// 取得总列数$data = [];for ($row = 5; $row <= $highestRow; $row++) //行号从1起始{for ($column = A; $column <= $highestColumm; $column++)//列数是以A列起始{if (empty($sheet->getCell($column . $row)->getValue()) ==false) {if (empty($data[$row]) == false) {$str = $sheet->getCell($column . $row)->getValue();if (strlen($str) > 11) {$pieces = explode("|", $str);$data[$row][mobile] = $pieces[0];} else {$data[$row][mobile] = $str;}} else {$data[$row][name] = $sheet->getCell($column .$row)->getValue();}}}}// dump($data);$myfile = fopen($uploadwork . $file_name . ".vcf", "w") ordie("Unable to open file!");foreach ($data as $key => $value) {$all_str = $this->make_vcard($value[name], $value[mobile]);fwrite($myfile, $all_str);}fclose($myfile);}}
本期技术分享结束啦!
下方投票是意见收集投票,能够帮忙咱们更好的改进分享内容,期盼能得到你的认可和意见,感谢你的参与!
童鞋们记得关注咱们的招聘信息、行业咨询哦,顺便记得三连!↓↓↓
本文谨表率个人观点,如有触及侵权,请联系咱们,咱们会即时删除。
|