这篇文章主要介绍了原生php实现excel文件读写的方法,结合实例形式分析了采用原生php针对Excel进行读写操作的相关实现方法与操作注意事项,需要的朋友可以参考下

本文实例分析了原生php实现excel文件读写的方法。分享给大家供大家参考,具体如下:

最近在工作中遇到一个需求,需要将数据库中的数据导出到excel文件中,并下载excel文件。因为以前没做过,所以就百度了一下,网上说的大多是使用PHPExcel类来操作excel文件,这还要去下载这个类才能使用,而我只想使用原生的php,不想那么麻烦,好在也有网友说到关于原生php生成excel文件的方法,其实很简单,下面把我结合网上资料自己实践的代码分享一下。

一般我们这种导数据的操作都是通过用户在网页页面上点击某个按钮触发相应js方法,然后请求php接口来实现的,所以主要有两种方法来完成这种需求。

方法1:直接在js代码中使用window.open()打开php接口的url,即可将php生成的excel文件下载下来。

php接口代码如下:

$mysqli = mysqli_connect('localhost', 'root', '123456', 'test');

$sql = 'select * from country';

$res = mysqli_query($mysqli, $sql);

header("Content-type:application/vnd.ms-excel");

header("Content-Disposition:filename=country.xls");

echo "code\t";

echo "name\t";

echo "population\t\n";

if(mysqli_num_rows($res) > 0) {

while($row = mysqli_fetch_array($res)) {

echo $row['code']."\t";

echo $row['name']."\t";

echo $row['population']."\t\n";

}

}

方法2:php接口中先把生成的excel文件保存在服务器中,然后把文件路径返回给js,js再使用window.open()打开文件路径即可下载。

php接口代码如下:

$mysqli = mysqli_connect('localhost', 'root', '123456', 'test');

$sql = 'select * from country';

$res = mysqli_query($mysqli, $sql);

$file = fopen('./country.xls', 'w');

fwrite($file, "code\tname\tpopulation\t\n");

if(mysqli_num_rows($res) > 0) {

while($row = mysqli_fetch_array($res)) {

fwrite($file, $row['code']."\t".$row['name']."\t".$row['population']."\t\n");//这里写得不好,应该把所有文件内容组装到一个字符串中然后一次性写入文件。

}

}

fclose($file);

echo 'http://www.jtw.com/....../country.xls';//这里返回文件路径给js

两种方法很类似,都能实现将数据库中的数据导出到excel文件中并下载文件,最终文件截图如下:

如果有需要,还可以使用原生php对excel文件内容进行读取操作,这主要用于需要将excel文件中的数据导入到数据库中的情况。

代码如下:(这里仅展示将文件数据读取到一个数组中)

$path = './country.xls';

$file = fopen($path, 'r');

//标题行读取(第一行)

$row = fgets($file);

$row = explode("\t", $row);

$title = array();

foreach($row as $k => $v) {

$title[$k] = str_replace("\n", '', $v);

}

//内容读取

$data = array();

$count = 0;

while(!feof($file)) {

$row = fgets($file);

$row = explode("\t", $row);

if(!$row[0]) continue;//去除最后一行

foreach($title as $k => $v) {

$data[$count][$title[$k]] = $row[$k];

}

$count ++;

}

fclose($file);

echo '

';

print_r($data);

不过,使用原生php生成的excel文件,存在一个问题,就是每次编辑文件之后保存文件的时候总是会出现如下截图的问题:

也不知道是什么原因,大概是生成的文件本身存在一些问题吧。。。

而且使用原生php对生成的excel文件进行读取的时候会出现中文乱码等一些奇葩情况。所以,使用原生php生成excel文件最好仅在某种情况下使用:只是单纯地将数据从数据库导出到文件中方便查看,无需对文件进行修改,也无需对文件进行读取。这种情况使用原生php来生成excel足以满足需求,免去使用第三方类库来操作excel的麻烦。不过,若是生成之后的文件还有修改保存、读取数据的需求,那还是老老实实使用phpexcel等第三方类库来进行读写操作吧,可以避免很多让人纠结的问题。

以上就是本文的全部内容,希望对大家的学习有所帮助,更多相关内容请关注PHP中文网!

相关推荐:

php 原生 excel,关于原生php实现excel文件读写的方法相关推荐

  1. php原生读取excel文件夹,原生php实现excel文件读写的方法分析php技巧

    这篇文章主要介绍了原生php实现excel文件读写的方法,结合实例形式分析了采用原生php针对Excel进行读写操作的相关实现方法与操作注意事项,需要的朋友可以参考下 本文实例分析了原生php实现ex ...

  2. python写入excel怎么跨列居中_python文件读写(三)-Excel表格三剑客xlwt,xlrd,xlutils...

    1.写xlwt import xlwt f = xlwt.Workbook() sheet1 = f.add_sheet(u'sheet1', cell_overwrite_ok=True) styl ...

  3. php导出csv_原生PHP实现导出csv格式Excel文件的方法示例【附源码下载】

    本文实例讲述了原生PHP实现导出csv格式Excel文件的方法.分享给大家供大家参考,具体如下: 效果图 源码分析 index.php require_once "./Export.php& ...

  4. 转html图片 xwpf_Word、Pdf、Excel、PPT、html等文件互转工具

    2020年第一波更新,再来个重量级的刚需场景,文件互转.有Excel催化剂后,不再需要频繁到处找寻各种网页在线版的转换操作,数据安全很重要,不要轻易将自己文件上传到网上,哪天出事了,没人可怜! 做最有 ...

  5. php页面导入excel表格,php页面导入excel表格数据:php导入excel 怎么获取excel表格数据...

    导入excel文件,后端php处理导入的数据并存入数据库,需要前后端结合的demo! thinkphp3.2phpexcel导入最基本用法 先整个最基础的代码,理解了这个,后面非常简单了 $file_ ...

  6. excel 导入mysql_如何将Excel文件导入MySQL数据库

    本文实例为大家分享了Excel文件导入MySQL数据库的方法,供大家参考,具体内容如下 1.简介 本博客给大家分享一个实用的小技能,我们在使用数据库时常常需要将所需的Excel数据添加进去,如果按照传 ...

  7. Spring MVC 实现Excel的导入导出功能(2:Excel的导入优化和Excel的导出)

    Excel的导入V2优化版 有些时候文件上传这一步骤由前端来处理,只将上传后的 URL 传输给后端(可以参考上一文中的图片上传功能),也就是导入请求中并不会直接处理 MultipartFile 对象, ...

  8. 大学生计算机基础excel视频,大学生计算机基础Excel.doc

    第四章 Excel 2003 4.1 Excel基础1 一.Excel 的特点1 二.Excel的界面1 三.文件操作2 4.2.数据输入和编辑2 一.输入数据2 二.选择单元格及单元格区域4 三.移 ...

  9. 解决Excel打开UTF-8编码的CSV文件乱码的问题 实测好用

    解决Excel打开UTF-8编码的CSV文件乱码的问题 1 2 3 4 5 6 分步阅读 CSV是一个平面文件,它的编码方式有多种.比如,MongoDB以UTF-8格式存储数据,在使用mongoexp ...

最新文章

  1. 【常见CPU架构对比】维基百科
  2. linux设置网卡队列,CentOS 修改网卡队列长度
  3. python判断CSV文件是否空
  4. Java编程之正则表达式
  5. 连接黑屏_连接百度Carlife后,MMI黑屏了?
  6. VS2013环境生成和调用DLL动态链接库
  7. MySQL——数据库的增删改操作
  8. electron 入坑记
  9. Android Jni 例程
  10. 大学计算机入学教育心得1000,新学期入学教育心得体会1000字
  11. HIT Software Construction Review Notes(1-2 Quality Objectives of Software Construction)
  12. Simulink 环境基础知识(二十一)--优化、估计和扫描模块参数值
  13. 51nod 1272 最大距离 By Assassin
  14. 2021年中考计算机考试,2021年初中信息技术考试操作题
  15. 通过银行卡号获取银行卡所属银行
  16. 【计算机科学基础】Unicode与UTF-8
  17. Oracle和plsql的卸载与安装
  18. 安装win7和Ubuntu双系统后,win7耳机没声音,外放有声音
  19. 英语学习经验分享(四六级、竞赛、口语)
  20. Oracle数据库创建定时任务

热门文章

  1. MicroStrategy 自定义可视化图表
  2. HTPC知识普及第一讲2
  3. 可信AI治理框架探索与实践
  4. shell脚本基础(环境变量、重定向、数学运算、退出脚本)
  5. Mac Pro m1打出反引号
  6. 读英语原版书两年经验分享
  7. 【LDF】线性判别函数(三)
  8. 安卓面试中高级安卓开发工程师总结之——大公司的任职资格要求总结(2018年)
  9. 欢 迎 投 稿 | Python中文社区征文启事
  10. 关于url链接包含中文编码问题