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 文件并输出其内容了。

    评论

报告相同问题?

悬赏问题

  • ¥15 用visual studi code完成html页面
  • ¥15 聚类分析或者python进行数据分析
  • ¥15 逻辑谓词和消解原理的运用
  • ¥15 三菱伺服电机按启动按钮有使能但不动作
  • ¥15 js,页面2返回页面1时定位进入的设备
  • ¥50 导入文件到网吧的电脑并且在重启之后不会被恢复
  • ¥15 (希望可以解决问题)ma和mb文件无法正常打开,打开后是空白,但是有正常内存占用,但可以在打开Maya应用程序后打开场景ma和mb格式。
  • ¥20 ML307A在使用AT命令连接EMQX平台的MQTT时被拒绝
  • ¥20 腾讯企业邮箱邮件可以恢复么
  • ¥15 有人知道怎么将自己的迁移策略布到edgecloudsim上使用吗?