通过 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 文件时从文本中删除双引号并用记事本打开它的主要内容,如果未能解决你的问题,请参考以下文章