通过 PhpExcel 导出 csv 文件时从文本中删除双引号并用记事本打开它

Posted

技术标签:

【中文标题】通过 PhpExcel 导出 csv 文件时从文本中删除双引号并用记事本打开它【英文标题】:Remove Double quotes from text when exporting csv file via PhpExcel and open it with notepad 【发布时间】:2016-01-28 07:01:01 【问题描述】:

我正在使用 phpExcel 导出 csv 文件,但是当我用记事本打开它时,它会在文本周围显示双引号。我不想要这些双引号。 谁能帮帮我?

以下是该文件的演示输出:

"Credits","Modified_User","Plain_Course_Name","Popular_Courses","ISBN_9","ISBN_7","Course_Number","ISBN_8","Book_2_REQUIRED_or_OPTIONAL","ISBN_5","ISBN_6","Course_Status","ISBN_3","ISBN_4","Book_9_REQUIRED_or_OPTIONAL","Bookstore_2_Course_Status","ISBN_2",

要生成 csv,我使用以下代码:

$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'csv');

如果我使用以下代码,那么记事本中的输出是正确的,但它会改变 excel csv 文件中的数据顺序。

$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'CSV')->setDelimiter(',')
                                                              ->setEnclosure('"')
                                                              ->setLineEnding("\r\n")
                                                              ->setSheetIndex(0)
                                                              ->save(__DIR__.'/'.$file_name);

【问题讨论】:

感谢您的编辑并改正。 还有谁能帮我在PhpExcel中以逗号分隔的文本格式导出csv? 【参考方案1】:

所以,根据我对 PHPExcel 的理解,文本附件默认设置为使用“,这就是为什么你在文件中的文本周围有”。第二个 sn-p 代码直接命中了你需要的东西,所以你很接近了!

您应该能够使用 $createWriter->setEnclosure('') 来打印不带双引号的项目。

在您的代码中看起来像这样:

$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'CSV')->setDelimiter(',')
                                             ->setEnclosure(' ')
                                             ->setLineEnding("\r\n")
                                             ->save(__DIR__.'/'.$file_name);

我不确定您是否需要 setLineEnding,尤其是当它是一行时。也许为了以后的解析你可能会。我希望这些信息对您有所帮助!

在他们的 gitHub 上有关于该主题的其他文档:https://github.com/PHPOffice/PHPExcel/blob/develop/Documentation/markdown/Overview/10-Reading-and-Writing.md

【讨论】:

感谢“crepuscularCoder”分享信息。但是每当我使用 $objWriter->setEnclosure(' ') 时,记事本中的文本都会反映正确,但是当我在 Excel 中打开文件时,记录不匹配(进入不同的位置)。 这很奇怪。可能存在某种 .csv 不应该的格式。那么,在您的文本文件中,数据看起来像苹果、香蕉、樱桃、葡萄等?如果删除 setLineEnding 会有所不同吗? 没有。实际上在 csv 中有长文本部分可用,所以当我使用 ->setEnclosure(' ') 时,文本会分成不同的位置。 大家好,在 phpexcel 导出 csv 文件中需要你们的帮助。我从另一个站点上可用的报告中导出 csv 文件,示例报告文本类似于“Spring - Full Semester, Fall - Full Semester, Summer - Summer Semester”(没有双引号,我手动添加它)但是当它导出时它显示为 [ Spring - Full Semester, Fall - Full Semester, Summer - Summer Semester] 用括号括起来。请帮助我解决这个问题。

以上是关于通过 PhpExcel 导出 csv 文件时从文本中删除双引号并用记事本打开它的主要内容,如果未能解决你的问题,请参考以下文章

PHP 读取和导出 CSV文件

为 PHPexcel 正确编码 CSV 文件

php怎么导出大量数据的Excel,phpexcel

php怎么导出大量数据的Excel

league之csv导出

php怎么导出大量数据的Excel