IT屌丝也有人用 2013-09-05 17:25 采纳率: 0%
浏览 1829

PHP遍历excel文档并输出内容

<?php
header("Content-Type:text/html;charset=GB2312");
//这是下载脚本之家的excel_reader2.php包!百度下就有了!
require_once 'excel/excel_reader2.php';
$dir="wps/";//存放文件夹名
$handle=opendir($dir."."); //打开目录
$row=array();
while (false !== ($file = readdir($handle)))
{
if ($file != "." && $file != "..") {
$row[]=$dir.$file; //输出文件名
//echo $file;
}
}
closedir($handle); //关闭打开的目录
//print_r($row);
$data = new Spreadsheet_Excel_Reader();
$data->setOutputEncoding('GB2312'); //设置文本输出编码
//读取Excel文件
//问题从这里开始的,下面循环excel文档,但是输出内容总是不变!
//for($k=0;$k $data->read($row[0]);//这是包里面的函数,读取excel文档
//$data->sheets[0]['numRows']为Excel行数
for ($i = 1; $i <= $data->sheets[0]['numRows']; $i++) {
}
//}
//$data->sheets[0]['numRows'] 是数组,要取的是$data->sheets[0]['numRows'][2]每行的内容(我的表里总共两行,所有表都一样!第一行为标题,要读取的是第二行的内容,所以为2),这里循环后,数组总不变,循环内容总是为第一个读取的内容!求高手能循环出所有文档中的内容!

print_r($data->sheets[0]['cells'][2]);

?>

  • 写回答

1条回答

  • ChatGPTᴼᴾᴱᴺᴬᴵ 2023-02-16 14:03
    关注

    该回答引用ChatGPT

    这段代码的问题在于,它只读取了一个 Excel 文件,而且读取的是 $row[0],也就是目录下的第一个文件。而在循环中,只是对这个文件进行了循环读取,但并没有读取其他文件。


    如果要遍历目录下的所有 Excel 文件并输出内容,可以把循环读取的部分放在循环目录下文件的部分内部,代码如下:

    <?php
    header("Content-Type:text/html;charset=GB2312");
    //这是下载脚本之家的excel_reader2.php包!百度下就有了!
    require_once 'excel/excel_reader2.php';
    $dir="wps/";//存放文件夹名
    $handle=opendir($dir."."); //打开目录
    while (false !== ($file = readdir($handle))) {
        if ($file != "." && $file != "..") {
            //读取Excel文件
            $data = new Spreadsheet_Excel_Reader();
            $data->setOutputEncoding('GB2312'); //设置文本输出编码
            $data->read($dir . "/" . $file);//这是包里面的函数,读取excel文档
            // $data->sheets[0]['numRows']为Excel行数
            for ($i = 2; $i <= $data->sheets[0]['numRows']; $i++) {
                // 输出每一行的内容
                print_r($data->sheets[0]['cells'][$i]);
            }
        }
    }
    closedir($handle); //关闭打开的目录
    ?>
    

    这段代码的改动如下:

    • 在循环目录下的文件时,先用 read 函数读取 Excel 文件的内容;

    • 在循环读取 Excel 文件的每一行时,从第二行开始读取,因为第一行是标题;

    • 输出每一行的内容,而不是只输出第二行的内容。

    这样,就能够遍历目录下的所有 Excel 文件并输出其内容了。

    评论

报告相同问题?

悬赏问题

  • ¥30 这是哪个作者做的宝宝起名网站
  • ¥60 版本过低apk如何修改可以兼容新的安卓系统
  • ¥25 由IPR导致的DRIVER_POWER_STATE_FAILURE蓝屏
  • ¥50 有数据,怎么建立模型求影响全要素生产率的因素
  • ¥50 有数据,怎么用matlab求全要素生产率
  • ¥15 TI的insta-spin例程
  • ¥15 完成下列问题完成下列问题
  • ¥15 C#算法问题, 不知道怎么处理这个数据的转换
  • ¥15 YoloV5 第三方库的版本对照问题
  • ¥15 请完成下列相关问题!