PHP - 更改默认的CSV工作表名称

时间:2017-12-22 00:25:40

标签: php excel csv

我正在使用PHP创建一个CSV文件,但我必须将“Sheet1”名称更改为“Import To 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”。

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

3 个答案:

答案 0 :(得分:2)

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

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

CSV只是一个具有假定结构的明文文件。它没有格式化或元数据的本机支持(除了典型的文件系统内容)。由于缺乏对元数据的支持,因此无法告诉Excel应该命名哪些工作表,因此它将获得默认值。实际上,如果您尝试将Excel文档另存为包含多个工作表的CSV文件,Excel(2016)将仅保存活动工作表。

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

答案 1 :(得分:1)

CSV文件只是一个文本文件,而不是电子表格。如果在NotePad中打开CSV文件,您将看到它只是数据,由Windows列表分隔符字符分隔 - 在许多国家/地区,逗号充当分隔符,因此缩写CVS =逗号分隔值。

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

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

PHPSpreadsheet

答案 2 :(得分:0)

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

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