在PHPExcel中按数字设置列值

时间:2018-07-03 09:09:15

标签: php phpexcel

我有一个带有规格的阵列。我希望每个规范都成为专栏。我在解决这个问题时遇到了麻烦。

$specifications = new Specifications();
$columnCounter = 1;
foreach ($specifications as $specificationId => $specification) {
    $column = PHPExcel_Cell::getColumnByNumber($columnCounter);
    $objPHPExcel
        ->getActiveSheet()
        ->getColumnDimension($column)
        ->setAutoSize(true)
    ;

    $objPHPExcel->setActiveSheetIndex(0)
        ->setCellValue($column.'1', $specification['value'])
    ;

    $columnCounter++;
}

PHPExcel::getColumnByNumber()当然是一个虚函数。尽管我想知道其他人如何做到这一点以及如何最好地解决这个问题。

1 个答案:

答案 0 :(得分:1)

$book = new PHPExcel();
$book->setActiveSheetIndex(0);
$sheet = $book->getActiveSheet();
$sheet->setTitle('Sets');
$xls_row = 5;
$xls_col = 3;
foreach($specifications as $specificationId => &$specification)
{
  $adr = coord($xls_row, $xls_col);
  $sheet->setCellValueExplicit($adr, $specification->title, PHPExcel_Cell_DataType::TYPE_STRING);
  $sheet->getColumnDimension(coord_x($xls_col))->setAutoSize(true);
  $xls_col++;
}

// convert a 0-based coordinate value into EXCEL B1-format
function coord_x($x)
{
  if($x<26) $x = chr(ord('A')+$x);
  else
  {
    $x -= 26;
    $c1 = $x % 26;
    $c2 = intval(($x - $c1)/26);
    $x = chr(ord('A')+$c2).chr(ord('A')+$c1);
  }
  return $x;
}

// convert X,Y 0-based cell address into EXCEL B1-format pair
function coord($y,$x)
{
  return coord_x($x).($y+1);
}