首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >PHP:将Excel转换为CSV,但使用实际单元格值而不是显示值

PHP:将Excel转换为CSV,但使用实际单元格值而不是显示值
EN

Stack Overflow用户
提问于 2022-09-07 08:05:33
回答 1查看 139关注 0票数 1

我有一个Excel文件,我想把它转换成CSV。我的Excel文件有一些单元格是格式化的,因此显示了1234.56

问题是,当我将Excel文件转换为CSV时,使用PHPSpreadSheet:

代码语言:javascript
代码运行次数:0
运行
复制
use PhpOffice\PhpSpreadsheet\Reader\Xlsx;
use PhpOffice\PhpSpreadsheet\Writer\Csv;

$reader = new Xlsx();
$spreadsheet = $reader->load('path_to_excel_file.xlsx');

$writer = (new Csv($spreadsheet))
    ->setEnclosure('')
    ->setLineEnding("\n")
    ->setDelimiter(';');
$writer->setSheetIndex(0);
$writer->save('path_to_csv.csv');

CSV文件中的值存储为1234.56 € (包括空格和符号),而我希望将它们存储为1234.56

我知道,在LibreOffice中,当将Excel转换为CSV时,您可以指定是按原样存储值还是将其格式化。

对于如何使用PHP (理想情况下使用PHPSpreadSheet )执行此操作,您有什么想法吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-09-07 09:59:23

根据手册,您只需要在加载excel表之前设置Read data only选项。

请查看以下更新的代码:

代码语言:javascript
代码运行次数:0
运行
复制
use PhpOffice\PhpSpreadsheet\Reader\Xlsx;
use PhpOffice\PhpSpreadsheet\Writer\Csv;

$reader = new Xlsx();
// set the Read data only option
$reader->setReadDataOnly(true);
$spreadsheet = $reader->load('path_to_excel_file.xlsx');

$writer = (new Csv($spreadsheet))
    ->setEnclosure('')
    ->setLineEnding("\n")
    ->setDelimiter(';');
$writer->setSheetIndex(0);
$writer->save('path_to_csv.csv');

参考资料:https://phpspreadsheet.readthedocs.io/en/latest/topics/reading-and-writing-to-file/#reading-and-writing-to-file

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73632052

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档