【问题标题】:PHP - Change default CSV sheet namePHP - 更改默认 CSV 工作表名称
【发布时间】:2017-12-22 00:25:39
【问题描述】:

我正在使用 PHP 创建一个 CSV 文件,但我必须将“Sheet1”名称更改为“导入到 Web”。这是我的代码:

// open the file "demosaved.csv" for writing
$file = fopen('demosaved.csv', 'w');

// save the column headers
fputcsv($file, array('Column 1', 'Column 2', 'Column 3', 'Column 4', 'Column 5'));

// Sample data. This can be fetched from mysql too
$data = array(
    array('Data 11', 'Data 12', 'Data 13', 'Data 14', 'Data 15'),
    array('Data 21', 'Data 22', 'Data 23', 'Data 24', 'Data 25'),
    array('Data 31', 'Data 32', 'Data 33', 'Data 34', 'Data 35'),
    array('Data 41', 'Data 42', 'Data 43', 'Data 44', 'Data 45'),
    array('Data 51', 'Data 52', 'Data 53', 'Data 54', 'Data 55')
);

// save each row of the data
foreach ($data as $row)
{
    fputcsv($file, $row);
}

// Close the file
fclose($file);

我尝试创建 CSV,但它将默认工作表名称设置为“Sheet1”。

请告诉我如何更改工作表名称。

【问题讨论】:

  • 这个根本上糟糕的代码 -> 没有错误检查。你认为你的fopen()fputcsv() 是防弹的吗?想打赌吗?
  • 应该是什么?
  • 检查错误?查看文档您是如何返回的。并且永远不要忽略诸如错误处理之类的事情。否则会严重打击你

标签: php excel csv


【解决方案1】:

您的要求是不可能的,并且从根本上是对您所使用的技术的误解。 Sheet1 是 Excel 中工作表的默认名称,与 CSV 格式无关。

在 Excel 中,您可以在一个工作簿 中随时打开多个工作表。这些是 Excel 的功能,只有在您使用的格式支持 xlsxlsx(Excel 的本机格式)或类似格式时才能使用。

CSV 只是一个具有假定结构的明文文件。它没有对格式化或元数据(除了典型的文件系统的东西)的原生支持。由于缺乏对元数据的支持,因此无法告诉 Excel 工作表应该命名什么,因此它使用默认值。事实上,如果您尝试将 Excel 文档另存为包含多个工作表的 CSV 文件,Excel (2016) 只会保存活动工作表。

要获得所需的控制级别,您需要使用一个旨在处理xlsx 文件的库,但这会增加相当大的开销。

【讨论】:

    【解决方案2】:

    CSV 文件只是一个文本文件,而不是电子表格。如果您在记事本中打开 CSV 文件,您会看到它只是数据,由 Windows 列表分隔符分隔 - 在许多国家/地区,逗号用作分隔符,因此缩写为 CVS = Comma Separated Values。

    CSV 文件根本不存储有关格式、公式、表格等的信息 - 只是值。同样凭借其结构,CSV 文件是 Excel 识别的单张数据;一个人不能拥有多张 CSV。

    我的建议是使用 PhpSpreadsheet 创建 Excel 文件,该文件可以存储工作表名称和其他相关信息。

    PHPSpreadsheet

    【讨论】:

      【解决方案3】:

      CSV 是一种非常原始的格式,不允许您指定工作表名称,因为工作表的概念对它完全陌生。

      您需要生成一个.xls.xlsx 文件来命名工作表。这需要不同的库。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-07-29
        • 2020-10-17
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多