繁体   English   中英

在PHPExcel上发布.csv文件

[英]Issue on .csv files on PHPExcel

我在读取.csv文件时遇到PHPExcel问题。

我想从.csv文件中获取值,但问题是来自特定行的数据被视为单个单元格。

继承我的代码:

        include 'Classes/PHPExcel/IOFactory.php';
        $inputFileType = 'CSV';
        $inputFileName = $_FILES['file']['tmp_name'];
        $objReader = PHPExcel_IOFactory::createReader($inputFileType);
        $objPHPExcel = $objReader->load($inputFileName);

        $sheetData = $objPHPExcel->getActiveSheet()->toArray(null,true,true,true);

        $table = "<table border=1><tr><td>first</td><td>middle</td><td>last</td><td>email</td>";

        for ($x = 2; $x <= count($sheetData); $x++){
            foreach ($sheetData[$x] as $data){
                $first = $sheetData[$x]['A'];
                $middle = $sheetData[$x]['B'];
                $last = $sheetData[$x]['C'];
                $email = $sheetData[$x]['D'];   
            }

            $table .= "<tr><td>" . $first ."</td><td>" . $middle . "</td><td>" . $last . "</td><td>" . $email . "</td></tr>";

        }

        $table .= "</table>";

        echo $table;

它正在处理.xls.xlsx文件,我得到了我想要的所需输出。

这很好用:

$objReader->setDelimiter("\t"); 

但是,当你不是100%确定它的标签或逗号是否分开时,似乎无法添加两个例如$objReader->setDelimiter("\\t",); 这是必需的。 当您打开Excel并转到导入CSV时,实际的屏幕上的步骤允许您指定多个分隔符,这将是很酷的。

这是你正在使用PHP Office的东西吗?

另外,这里有两个链接,可帮助您使用PHP查找文件是否以逗号,制表符或管道分隔 - 安静一个聪明的解决方案:

如何找出csv文件字段是否以制表符分隔或以逗号分隔

我该如何检测文本文件中使用的分隔符?

这对我有用:

        $objReader = new PHPExcel_Reader_CSV();
        $objReader->setDelimiter(';');
        $objReader->setEnclosure('');
        $objReader->setLineEnding("\r\n");
        $objReader->setSheetIndex(0);
        $objPHPExcel = $objReader->load($myFile);

更多信息https://docs.typo3.org/typo3cms/extensions/phpexcel_library/1.7.4/manual.html#_Toc237519888

那么文件中的分隔符是什么? 它是逗号,分号,标签还是别的什么?

PHPExcel还没有自动检测模式,因此除非您指定要使用的分隔符和附件,否则它将默认为逗号分隔符和双引号(“)附件。如果您的文件使用制表符或半冒号,或者将某个其他字符作为分隔符,然后您需要手动告诉CSV读取器使用哪个字符,否则它会将该行视为单个单元格。

阅读器的用户文档的一部分专门用于解释CSV文件的这些选项(见第4.6节)。

请注意,我的目标逻辑是从#phpnw13黑客马拉松中的文件本身“最佳猜测”分隔符和机箱值,但在此之前,如果不是默认值,则需要手动指定

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM