在单元格内创建连字符列表

Creating a hyphen list inside a cell

我正在尝试弄清楚如何将连字符列表插入到带有 phpexcel 的单元格中,如下所示:

-Value A
-Value B

我尝试使用以下代码片段:

// input value can be something else
$value = "-ValueA\n-Value B";

if (strpos($value, '-') === 0 || strpos($value, '=') === 0) {
    $value = '\'' . $value;
    $cell->setValueExplicit($value, \PHPExcel_Cell_DataType::TYPE_FORMULA);
} else {
    $cell->setValueExplicit($value, \PHPExcel_Cell_DataType::TYPE_STRING);
}

$cell->getStyle()->getAlignment()->setWrapText(true);

但是使用此代码 phpexcel 在字符串前添加一个等号 (=)。

当我跳过部分以转义连字符 (-) 时 excel 在单元格中显示撇号,如:

'-Value A
-Value B

直到我点击进出单元格。

如何正确转义连字符?我正在使用 PHPExcel 1.8.1 和 PHP 5.6.8。创建一个 xlsx 文件并使用 Excel 2007.

打开它

您只需要一个包含换行符的字符串....但不要尝试将其设置为公式....它不是公式

$value = "-ValueA\n-Value B\n-Value C";
$objPHPExcel->getActiveSheet()
    ->setCellValue('A10', $value);
$objPHPExcel->getActiveSheet()
    ->getRowDimension(10)
    ->setRowHeight(-1);
$objPHPExcel->getActiveSheet()
    ->getStyle('A10')
    ->getAlignment()
    ->setWrapText(true);

编辑

如果您想在单元格值前加上引号以避免 MS Excel 试图将该值视为公式,请不要在实际值前加上引号,而是使用 quotePrefix 样式设置:

$objPHPExcel->getActiveSheet()
    ->getStyle('A10')
    ->setQuotePrefix(true);

Excel2007 (.xlsx) 仅