2012-07-13 2 views
3

PHPExcel을 사용하여 mysql 데이터베이스의 데이터를 엑셀 통합 문서로 출력하고 있습니다. 내 통합 문서에는 3 장이 있으며 대부분이 잘 작동합니다. 세 번째 시트 출력 마지막 부분에 문제가 있습니다. 내가 뭘 하려는지 행 헤더와 열 헤더를 가진 테이블 출력은 mysql 테이블에서 취한 값과 행/열 조합 당 취한 값을 그 행/열 헤더가 무엇인지에 기반한 mysql 테이블에서 가져온다. . 행과 열 헤더는 파일에 기록되지만 내부 테이블 수치는 그렇지 않습니다. 출력을 화면에 표시 할 때 모든 데이터가 나타나고 행/열 반복이 증가하므로 setCellValueByColumnAndRow가 워크 시트의 값을 설정하지 않은 것처럼 보입니다. 문제가있는 코드 섹션은 다음과 같습니다. 누구든지 내 코드에 문제가있는 곳을 볼 수 있습니까?PHPExcel setCellValueByColumnAndRow가 스프레드 시트에 데이터를 쓰지 않습니다.

$objPHPExcel->setActiveSheetIndex(2); 

while($srow = mysql_fetch_assoc($query_company)) 
{ 
$newarray[] = $srow['entity']; 
} 
$row4 = 2; 
$col4 = 1; 
while($trow = mysql_fetch_row($query_ctry)) 
{ 
$country = $trow[0]; 

while($comp = each($newarray)) 
{ 
$company = $comp[1]; 
$total = mysql_query("SELECT noparts FROM totalslist WHERE country = '$country' AND entity = '$company'") or die (mysql_error()); 
if ($numrows = mysql_num_rows($total) == 0) 
{ 
$totalres = 0; 
} 
else 
{ 
$result3 = mysql_fetch_row($total); 
$totalres = $result3[0]; 
} 

$objPHPExcel->getActiveSheet()->setCellValueByColumnAndRow($col4, $row4, $totalres); 
$col4++; 

} 
reset($newarray); 
$row4++; 
$col4 = 1; 
} 
+0

해결책을 찾았 으면 자신의 질문에 답하고 다른 누구에게나 동일한 문제를 제기 할 수 있습니다. – SomeKittens

답변

1

** 해결 방법! 실제로 코드를 약간 변경하여이 문제를 해결했습니다. 행과 열 헤더를 먼저 작성한 다음 내부 테이블 값을 추가했습니다. 아래 코드와 같이 행과 열을 통해 증가 할 때 헤더와 데이터를 추가하도록 코드를 변경했습니다. 다른 사람을 도울 수 있습니다.

$objPHPExcel->createSheet(2); 
$objPHPExcel->setActiveSheetIndex(2); 
$objPHPExcel->getActiveSheet()->setTitle('PivotTable'); 
$query_ctry = mysql_query("SELECT DISTINCT country FROM totalslist ORDER BY country"); 
$numctry = mysql_num_rows($query_ctry); 
$query_company = mysql_query("SELECT DISTINCT entity FROM totalslist ORDER BY entity"); 
$numcomp = mysql_num_rows($query_company); 

while($srow = mysql_fetch_assoc($query_company)) 
{ 
    $newarray[] = $srow['entity']; 
} 
$row3 = 2; 
$col3 = 1; 
while($trow = mysql_fetch_row($query_ctry)) 
{ 
    $country = $trow[0]; 

    while($comp = each($newarray)) 
    { 
     $company = $comp[1]; 
     $total = mysql_query("SELECT noparts FROM totalslist WHERE country = '$country' AND entity = '$company'"); 
    if ($numrows = mysql_num_rows($total) == 0) 
    { 
     $totalres = 0; 
    } 
    else 
    { 
     $result3 = mysql_fetch_row($total); 
     $totalres = $result3[0]; 
    } 
    $objPHPExcel->getActiveSheet()->setCellValueByColumnAndRow(0, $row3, $country); 
    $objPHPExcel->getActiveSheet()->setCellValueByColumnAndRow($col3, 1, $company); 
    $objPHPExcel->getActiveSheet()->setCellValueByColumnAndRow($col3, $row3, $totalres); 
    $col3++; 

    } 
     reset($newarray); 
     $row3++; 
     $col3 = 1; 
} 
     // Save Excel file 
     $objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel2007'); 
     $objWriter->save('php://output'); 
     exit(); 
관련 문제