【问题标题】:Simplest way to read an csv file using php使用 php 读取 csv 文件的最简单方法
【发布时间】:2025-12-17 09:10:01
【问题描述】:

使用 php 读取 csv 文件的最简单方法是什么

这是代码,这里的问题是,它在一行中读取所有内容

$row = 1;
if (($handle = fopen("1.csv", "r")) !== FALSE) {
    while (($data = fgetcsv($handle, 1000, ",")) !== FALSE) {
        $num = count($data);
        echo "<p> $num fields in line $row: <br /></p>\n";
        $row++;
        for ($c=0; $c < $num; $c++) {
            echo $data[$c] . "<br />\n";
        }
    }
    fclose($handle);
}

谢谢 让

[编辑]

抱歉,是的,我想读取 csv 文件

【问题讨论】:

  • 各位,我不是在找PHP类,只是一个可以读取excel文件的简单脚本。
  • 请注意,CSV 文件不是 Excel 文件
  • @mark baker 是一个 csv 文件,更改了标题...谢谢
  • 您是否在 Mac 上运行此脚本?或针对在 Mac 上生成的 CSV 文件?如果是这样,PHP 手册的 fgetcsv() 页面上有一个关于行尾的特殊说明
  • @X10nD ,如果答案解决了您的问题,请将其标记为正确。谢谢!

标签: php


【解决方案1】:

编辑: 在我看来,您想阅读 CSV 文件。

以下是上述电子表格的功能示例

$file_handle = fopen("widgets.csv", "r");

while (!feof($file_handle) ) {

$line_of_text = fgetcsv($file_handle, 1024);

打印 $line_of_text[0] 。 $line_of_text[1]。 $line_of_text[2] 。 "
";

}

fclose($file_handle);

但如果您真的想读取 Excel 格式的文件。 xlsx,可以使用 PHPExcel 库。 http://phpexcel.codeplex.com/

阅读电子表格

$objReader = new PHPExcel_Reader_Excel2007();

$objPHPExcel = $objReader->load("05featuredemo.xlsx");

设置属性

回显日期('H:i:s') 。 “ 放 属性\n";

$objPHPExcel->getProperties()->setCreator("Maarten Balliauw");

$objPHPExcel->getProperties()->setLastModifiedBy("Maarten 巴利乌");

$objPHPExcel->getProperties()->setTitle("Office 2007 XLSX 测试文件");

$objPHPExcel->getProperties()->setSubject("Office 2007 XLSX 测试文件");

$objPHPExcel->getProperties()->setDescription("Office 2007 XLSX的测试文档, 使用 PHP 类生成。");

添加一些数据

回显日期('H:i:s') 。 " 添加一些 数据\n";

$objPHPExcel->setActiveSheetIndex(0);

$objPHPExcel->getActiveSheet()->SetCellValue('A1', 'Hello');

$objPHPExcel->getActiveSheet()->SetCellValue('B2', 'world!');

$objPHPExcel->getActiveSheet()->SetCellValue('C1', 'Hello');

$objPHPExcel->getActiveSheet()->SetCellValue('D2', 'world!');

重命名工作表

回显日期('H:i:s') 。 “ 改名 表\n";

$objPHPExcel->getActiveSheet()->setTitle('Simple');

保存 Excel 2007 文件

回显日期('H:i:s') 。 “ 写给 Excel2007格式\n";

$objWriter = 新的 PHPExcel_Writer_Excel2007($objPHPExcel);

$objWriter->save(str_replace('.php', '.xlsx', 文件));

仅阅读特定表格

您可以在阅读器上设置选项 setLoadSheetsOnly,以指示阅读器仅加载具有给定名称的工作表:

$objReader = 新 PHPExcel_Reader_Excel2007();

$objReader->setLoadSheetsOnly( 数组(“表 1”,“我的特殊表”) );

$objPHPExcel = $objReader->load("05featuredemo.xlsx");

就是这样!

更多信息和文档在:

http://phpexcel.codeplex.com/

【讨论】:

  • // 您也可以创建新的电子表格。 $objPHPExcel = new PHPExcel();
【解决方案2】:

您可以尝试删除 'length' 参数,或设置为 0,尤其是当您的行长度超过 1000 个字符时。

【讨论】:

    【解决方案3】:

    如果你在windows下使用php你可以创建一个com对象。

    $excel_app = 新的 COM("Excel.application") 或 Die ("Did 不连接");

    【讨论】:

      【解决方案4】:

      试试PHP-ExcelReader。我从未使用过它,但它声称是跨平台的。

      【讨论】:

        【解决方案5】:

        您没有指明哪个版本的 Excel;但是看看PHPExcel(它可以读取 BIFF5-8 格式,以及罕见的 Excel2003 XML 格式,以及 Excel2007 引入的更新的 OpenXML 标准)。它是纯 PHP,因此可以在任何平台上运行(无需 .COM)。

        既得利益声明:我是开发者之一。

        【讨论】:

        • 我正在尝试自己编写脚本,而不是使用可用的脚本,它有助于调试。寻找通用的东西
        • 如果你真的想自己编写一个脚本来读取 Excel 文件,那么祝你好运……这是一个大量的艰苦工作(PHPExcel 已经 3 1/2 年以上的开发,并且仍在进行中)特别是如果您从一个只需要 PHP 内置函数的 CSV 阅读器开始。但是,如果您真的想着手编写 Excel 阅读器,为什么不帮助整个 PHP 开发人员社区都可以使用的现有项目,而不是简单地为自己编写它。
        【解决方案6】:

        以下是最好的工作示例:

        <?php
        
        ini_set('auto_detect_line_endings', TRUE);
        
        $header = '';
        $rows = array_map('str_getcsv', file('ZE5C630852D4DB9AD75E5DE.csv'));
        $header = array_shift($rows);
        $csv = array();
        foreach ($rows as $row) {
          $csv[] =  $row;
        }
        
        /*echo "<pre>";
        print_r($csv);*/
        
        ?>
        

        【讨论】:

          最近更新 更多