使用php创建.xls文件

使用php创建.xls文件,php,excel,export,fwrite,Php,Excel,Export,Fwrite,这就是我所拥有的: $sep = "\t"; //tabbed character $fp = fopen('registrars.xls', "w"); $schema_insert_rows = ""; //printing column names $schema_insert_rows.="#" . $sep; $schema_insert_rows.="Registrar" . $sep; $schema

这就是我所拥有的:

   $sep = "\t";        //tabbed character
    $fp = fopen('registrars.xls', "w");

$schema_insert_rows = "";
//printing column names 

        $schema_insert_rows.="#" . $sep;
        $schema_insert_rows.="Registrar" . $sep;
        $schema_insert_rows.="Country" . $sep;
        $schema_insert_rows.="Website" . $sep;
        //$schema_insert_rows.="Postal Address" . $sep;
        //$schema_insert_rows.="Contact Number" . $sep;
        $schema_insert_rows.="Email Address" . $sep;

        $schema_insert_rows.="\n";
        fwrite($fp, $schema_insert_rows);

// printing data:
    $row = 0; $i = 0; $schema_insert_rows = "";

        $schema_insert_rows .= (++$row) . "" . $sep;
        $schema_insert_rows .= $registrarArr[$i] . "" . $sep;
        $schema_insert_rows .= $registrarArr[$i+1] . "" . $sep;
        $schema_insert_rows .= $linkArr[$i] . "" . $sep;
        $schema_insert_rows .= (string)(strip_tags($address)) . "" . $sep;
        $schema_insert_rows .= (string)(strip_tags($phone)). "" . $sep;
        $schema_insert_rows .= "email test";

        $schema_insert_rows .= "\n";



fwrite($fp, $schema_insert_rows);

fclose($fp);

另一个专栏很好用,但我注释掉的那些专栏不适用于[邮政地址和电子邮件地址]。。如果我删除了注释,数据将转到下一行,尽管它应该与其他行在同一行上。。我通过var_dump查看是否有
但没有。。这里出了什么问题?

看起来您试图创建的是一个以tab作为分隔符的CSV文件(逗号分隔的值)

您可以使用PHP的函数来完成相同的任务

代码示例(来自PHP手册):


看起来您试图创建的是一个CSV文件(以逗号分隔的值),其中以tab作为分隔符

您可以使用PHP的函数来完成相同的任务

代码示例(来自PHP手册):

我在一个客户项目中使用过,效果很好。它可以生成Microsoft Excel,打开Excel和PDF文档

您可能会发现文件格式CSV限制

较新但尚未稳定的项目是。 它还支持更多的格式。

我在一个客户项目中使用过,效果很好。它可以生成Microsoft Excel,打开Excel和PDF文档

您可能会发现文件格式CSV限制

较新但尚未稳定的项目是。
它还支持更多的格式。

注释中可能包含会破坏CSV格式的换行符。您可以尝试将每个字段用引号括起来,但不能确定这实际上不是您正在创建的xls文件,而是一个以制表符分隔的值文件。xls是一种二进制格式。使用PHP内置的fputcsv()函数来创建一个以制表符分隔的值文件也更容易。注释中可能包含会破坏CSV格式的换行符。您可以尝试将每个字段用引号括起来,但不能确定这实际上不是您正在创建的xls文件,而是一个以制表符分隔的值文件。xls是一种二进制格式。使用PHP的内置fputcsv()函数创建一个制表符分隔的值文件也更容易。我正在尝试创建.xls文件,而不是.csv。。如果我去掉了邮政地址和电话栏,那么在.xls格式中一切都很好。。我只是想知道为什么其他两个信息会出错..您上面的代码尝试做与fputcsv函数完全相同的事情,只是它自动转义可能有问题的值(我认为这是破坏您的代码的原因)。为什么不试一试呢?我正在尝试创建.xls文件,而不是.csv。。如果我去掉了邮政地址和电话栏,那么在.xls格式中一切都很好。。我只是想知道为什么其他两个信息会出错..您上面的代码尝试做与fputcsv函数完全相同的事情,只是它自动转义可能有问题的值(我认为这是破坏您的代码的原因)。你为什么不试一试呢?
$list = array (
    array('#', 'Registrar', 'Country', 'Website', 'Email Address'),
    array('123', '456', '789', 'aaa', 'bbb'),
    array('123', '456', '789', 'aaa', 'bbb'),
);

$fp = fopen('registrars.xls', 'w');

foreach ($list as $fields) {
    fputcsv($fp, $fields, "\t", '"');
}

fclose($fp);