首页 > 解决方案 > 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

如果有更好和正确的方法来做到这一点,任何帮助表示赞赏。

标签: phphtmlexcel

解决方案


CSV,顾名思义,只是一个包含逗号分隔值的文本文件,但由于它是纯文本,因此无法格式化。
Microsoft Excel 为“善意”打开 CSV 格式,但它不是 excel 格式。
如果您的目标是拥有一个格式良好的电子表格,那么我建议您使用PHPSpreadsheet 之类的 3rd 方库,您可以通过 composer 和composer require phpoffice/phpspreadsheet.
当然,您需要切换到面向对象编程(在 PHP 中,它从 5.1.0 版开始支持)。
希望这会有所帮助。


推荐阅读