Рефакторинг PHP-кода, который выводит CSV с формулами - PullRequest
0 голосов
/ 19 мая 2009

У меня есть некоторый PHP-код, предназначенный для создания электронной таблицы с уже имеющимися формулами для суммирования некоторых столбцов. Кажется, должен быть гораздо более элегантный способ сделать это, чем приведенный ниже код. Каковы некоторые рефакторинги или шаблоны проектирования, которые могли бы выполнить что-то вроде приведенного ниже кода лучше?

<?
echo ",Current Milestone,Total Hours,Milestone 1 Hours,Milestone 2 Hours,Milestone 3 Hours\n";
$row = 2; 
$totSSRange = ""; 
foreach($departments as $dept){
    $deptStartRow = $row + 1;
    echo $dept['name']."\n";
    foreach($dept['modules'] as $module){
        $row++;
        echo $module['name'].','.$module['ms'].',=SUM(D'.$row.':F'.$row.'),'.$module['m1'].','.$module['m2'].','.$module['m3']."\n";
    }
    $deptSSRange = "C".$deptStartRow.":C".$row; 
    $totSSRange .= $deptSSRange.","; 
    $sumStr = "=SUM(".$deptSSRange.")"; 
    echo 'Sum,,'.$sumStr.','.str_replace("C","D",$sumStr).','.str_replace("C","E",$sumStr).','.str_replace("C","F",$sumStr)."\n\n";
    $row+=3; 
} 
$totSumStr = "\"=SUM(".$totSSRange.")\"";
echo 'Total,,'.$totSumStr.','.str_replace("C","D",$totSumStr).','.str_replace("C","E",$totSumStr).','.str_replace("C","F",$totSumStr);
?>

1 Ответ

2 голосов
/ 19 мая 2009

Используйте PEAR :: Spreadsheet_Excel_Writer , это фактически навязывает вам некоторые хорошие принципы проектирования. Кроме того, он будет дезинфицировать и нормализовать все вводимые данные.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...