php - PHP:将输入文本从 HTML 表单写入 Excel 中的特定单元格
问题描述
我正在尝试将结果数据从 html 表单存储到 Excel 中的特定单元格,但现在我只能在没有格式化的情况下写入数据,应该在其中填写值。
这是代码:
<body>
<form action="excel.php" method="post">
<table>
<tr><td>Name</td><td><input type="text" name="name" /></td></tr>
<tr><td>Email</td><td><input type="text" name="email" /></td></tr>
<tr><td>Location</td><td><input type="text" name="location" /></td></tr>
<tr><td> </td><td><input type="submit" /></td></tr>
</table>
</form>
</body>
</html>
只是基本的 html 表单,这里是用于以 csv 格式导出表单结果的 PHP 代码。
<?php
$filename = "myexcel.csv";
header( 'Content-Type: text/csv' );
header( 'Content-Disposition: attachment;filename='.$filename);
$file = fopen('php://output', 'w');
$cells[] = array('Name', 'Email', 'Location');
$cells[] = array($_POST['name'], $_POST['email'], $_POST['location']);
foreach($cells as $cell){
fputcsv($file,$cell);
}
fclose($file);
?>
从上面的代码来看,这是 excel 中的结果: 图 1
这是我预期的结果: 图 2
如果有更好和正确的方法来做到这一点,任何帮助表示赞赏。
解决方案
CSV,顾名思义,只是一个包含逗号分隔值的文本文件,但由于它是纯文本,因此无法格式化。
Microsoft Excel 为“善意”打开 CSV 格式,但它不是 excel 格式。
如果您的目标是拥有一个格式良好的电子表格,那么我建议您使用PHPSpreadsheet 之类的 3rd 方库,您可以通过 composer 和composer require phpoffice/phpspreadsheet
.
当然,您需要切换到面向对象编程(在 PHP 中,它从 5.1.0 版开始支持)。
希望这会有所帮助。
推荐阅读
- r - 使用特定列的值从其他行中减去,但列索引在 R 中的文件之间移动
- spring - 使用反应式 DB 客户端扩展 Spring WebFlux 应用程序时出现问题:Maven 依赖项冲突?
- git - 如何 grep Git 提交消息或关键字的差异并输出更改(聚合)的文件名?
- javascript - CakePHP scriptBlock 没有在 HTML 页面中添加任何 JavaScript
- node.js - 为什么我不能直接使用 req.body 作为参数?
- javascript - React Native,为什么 react-native run-android 不起作用?
- hadoop - 使用 cygwin 在窗口 10 上配置 Hive:路径错误
- python - 在 pylint 和 mypy 中处理 Python 类重新定义警告
- javascript - 在部署在不同域上的两个仅客户端 JS 应用程序之间共享本地 blob 数据
- amazon-web-services - 多个电子邮件地址作为 aws elastic beanstalk 的通知订阅者