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

时间:2015-08-06 13:27:38

标签: phpexcel

我正在试图弄清楚如何将连字符列表插入到像这样的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打开它。

1 个答案:

答案 0 :(得分:0)

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

$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