• 售前

  • 售后

热门帖子
入门百科

原生php实现excel文件读写的方法分析

[复制链接]
李松泰李c 显示全部楼层 发表于 2021-10-25 19:41:42 |阅读模式 打印 上一主题 下一主题
本文实例分析了原生php实现excel文件读写的方法。分享给大家供大家参考,具体如下:
近来在工作中遇到一个需求,须要将数据库中的数据导出到excel文件中,并下载excel文件。由于以前没做过,以是就百度了一下,网上说的大多是使用PHPExcel类来操作excel文件,这还要去下载这个类才能使用,而我只想使用原生的php,不想那么贫困,好在也有网友说到关于原生php生成excel文件的方法,实在很简朴,下面把我联合网上资料本身实践的代码分享一下。
一般我们这种导数据的操作都是通过用户在网页页面上点击某个按钮触发相应js方法,然后哀求php接口来实现的,以是重要有两种方法来完成这种需求。
方法1:直接在js代码中使用
  1. window.open()
复制代码
打开php接口的url,即可将php生成的excel文件下载下来。
php接口代码如下:
  1. $mysqli = mysqli_connect('localhost', 'root', '123456', 'test');
  2. $sql = 'select * from country';
  3. $res = mysqli_query($mysqli, $sql);
  4. header("Content-type:application/vnd.ms-excel");
  5. header("Content-Disposition:filename=country.xls");
  6. echo "code\t";
  7. echo "name\t";
  8. echo "population\t\n";
  9. if(mysqli_num_rows($res) > 0) {
  10.   while($row = mysqli_fetch_array($res)) {
  11.     echo $row['code']."\t";
  12.     echo $row['name']."\t";
  13.     echo $row['population']."\t\n";
  14.   }
  15. }
复制代码
方法2:php接口中先把生成的excel文件保存在服务器中,然后把文件路径返回给js,js再使用
  1. window.open()
复制代码
打开文件路径即可下载。
php接口代码如下:
  1. $mysqli = mysqli_connect('localhost', 'root', '123456', 'test');
  2. $sql = 'select * from country';
  3. $res = mysqli_query($mysqli, $sql);
  4. $file = fopen('./country.xls', 'w');
  5. fwrite($file, "code\tname\tpopulation\t\n");
  6. if(mysqli_num_rows($res) > 0) {
  7.   while($row = mysqli_fetch_array($res)) {
  8.     fwrite($file, $row['code']."\t".$row['name']."\t".$row['population']."\t\n");//这里写得不好,应该把所有文件内容组装到一个字符串中然后一次性写入文件。
  9.   }
  10. }
  11. fclose($file);
  12. echo 'http://www.jtw.com/....../country.xls';//这里返回文件路径给js
复制代码
两种方法很类似,都能实现将数据库中的数据导出到excel文件中并下载文件,最终文件截图如下:

如果有须要,还可以使用原生php对excel文件内容举行读取操作,这重要用于须要将excel文件中的数据导入到数据库中的环境。
代码如下:(这里仅展示将文件数据读取到一个数组中)
  1. $path = './country.xls';
  2. $file = fopen($path, 'r');
  3. //标题行读取(第一行)
  4. $row = fgets($file);
  5. $row = explode("\t", $row);
  6. $title = array();
  7. foreach($row as $k => $v) {
  8.   $title[$k] = str_replace("\n", '', $v);
  9. }
  10. //内容读取
  11. $data = array();
  12. $count = 0;
  13. while(!feof($file)) {
  14.   $row = fgets($file);
  15.   $row = explode("\t", $row);
  16.   if(!$row[0]) continue;//去除最后一行
  17.   foreach($title as $k => $v) {
  18.     $data[$count][$title[$k]] = $row[$k];
  19.   }
  20.   $count ++;
  21. }
  22. fclose($file);
  23. echo '<pre>';
  24. print_r($data);
复制代码
不过,使用原生php生成的excel文件,存在一个问题,就是每次编辑文件之后保存文件的时间总是会出现如下截图的问题:

也不知道是什么原因,大概是生成的文件本身存在一些问题吧。。。
而且使用原生php对生成的excel文件举行读取的时间会出现中文乱码等一些奇葩环境。以是,使用原生php生成excel文件最好仅在某种环境下使用:只是单纯地将数据从数据库导出到文件中方便查察,无需对文件举行修改,也无需对文件举行读取。这种环境使用原生php来生成excel足以满足需求,免除使用第三方类库来操作excel的贫困。不过,如果生成之后的文件尚有修改保存、读取数据的需求,那还是老老实实使用phpexcel品级三方类库来举行读写操作吧,可以避免很多让人纠结的问题。
更多关于PHP相干内容感爱好的读者可查察本站专题:《php操作office文档技巧总结(包括word,excel,access,ppt)》、《PHP数组(Array)操作技巧大全》、《PHP数据结构与算法教程》、《php程序设盘算法总结》、《PHP数学运算技巧总结》、《php正则表达式用法总结》、《php字符串(string)用法总结》及《php常见数据库操作技巧汇总》
渴望本文所述对大家PHP程序设计有所帮助。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x

帖子地址: 

回复

使用道具 举报

分享
推广
火星云矿 | 预约S19Pro,享500抵1000!
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

草根技术分享(草根吧)是全球知名中文IT技术交流平台,创建于2021年,包含原创博客、精品问答、职业培训、技术社区、资源下载等产品服务,提供原创、优质、完整内容的专业IT技术开发社区。
  • 官方手机版

  • 微信公众号

  • 商务合作