У меня есть 2 разные проблемы здесь.
Форматирование работает нормально с форматом filename.xls, но не
работа с форматом файла filename.xlsx (Microsoft Office 2007)
Я пытался перейти на версию файла .xls, но с этой версией
наши формулы как= SUMIFS (база данных tams! Q: Q, база данных tams! I:
Я, F $ 1, база данных tams! U: U, E1, база данных tams! X: X, D1)‘ являются
бросая некоторые предупреждения, такие как
Предупреждение PHP: ExcelSheet :: write (): не удалось записать ячейку в строке 66, столбце 13 с ошибкой «неверный токен в формуле» в /var/www/portal/www/tcc_v2/app/controllers/DebriefController.php в строке 493
Примечание: я позаботился об ExcelBook (», », true / false) w.r.t xlsx & XLS файлы
Пожалуйста, дайте мне знать, если что-то не так с моим кодом.
Спасибо
<?php$libxl = new ExcelBook("XXXX XXXX","linux-XXXXXXXXXXXXXXXXXXXXXXXX",true);
$libxl->loadFile('sample_workbook.xlsx');
$headerFont = $libxl->addFont();
$headerFont->bold(true);
$headerFont->name('Verdana');
$headerFont->size(10);
$headerFormat = $libxl->addFormat();
$headerFormat->fillPattern(ExcelFormat::FILLPATTERN_SOLID);
$headerFormat->verticalAlign(ExcelFormat::ALIGNV_CENTER);
$headerFormat->horizontalAlign(ExcelFormat::ALIGNH_CENTER);
$headerFormat->borderStyle(ExcelFormat::BORDERSTYLE_THIN);
$headerFormat->patternForegroundColor(ExcelFormat::COLOR_YELLOW);
$headerFont->color(ExcelFormat::COLOR_BLACK);
$headerFormat->setFont($headerFont);$bodyFont = $libxl->addFont();
$bodyFont->bold(false);
$bodyFont->name('Verdana');
$bodyFont->size(10);
$bodyFormat = $libxl->addFormat();
$bodyFormat->fillPattern(ExcelFormat::FILLPATTERN_SOLID);
$bodyFormat->verticalAlign(ExcelFormat::ALIGNV_CENTER);
$bodyFormat->horizontalAlign(ExcelFormat::ALIGNH_CENTER);
$bodyFormat->patternForegroundColor(ExcelFormat::COLOR_WHITE);
$bodyFormat->borderStyle(ExcelFormat::BORDERSTYLE_THIN);
$bodyFont->color(ExcelFormat::COLOR_BLACK);
$bodyFormat->setFont($bodyFont);
/*-------------------------- Data Sheet End --------------------------*/
$sheet = $libxl->getSheetByName('sales');
$productListDetails = $debriefObj->getDebriefExportDataForProductList($sDateFrom, $sDateTo, $promotionID);
$iHeader = 5;
$iRow = 0;
if( count($productListDetails) > 0 )
{
foreach ($productListDetails as $data)
{
$sheet->write($iRow, $iHeader, $data['Name'], $headerFormat);
$iHeader++;
}
}
$sheet->write($iRow, $iHeader, 'TOTAL SALES', $headerFormat);
$iHeader++;
$sheet->write($iRow, $iHeader, 'HOW MANY CONSUMERS DID YOU APPROACH ?', $headerFormat);
$iHeader++;
$sheet->write($iRow, $iHeader, 'DAYS SCHEDULED', $headerFormat);
$iHeader++;
$sheet->write($iRow, $iHeader, 'DAYS RUN', $headerFormat);
$iHeader++;
$productDetails = $debriefObj->getDebriefExportDataForProducts($sDateFrom, $sDateTo, $promotionID);
$iRow = 1;
$lastColumnDaysRun = 0;
$productColStart = 0;
if( count($productDetails) > 0 )
{
foreach ($productDetails as $data)
{
$iHeader = 0;
$sheet->write($iRow, $iHeader, htmlspecialchars_decode($data['Region'], ENT_QUOTES), $bodyFormat);
$iHeader++;
$sheet->write($iRow, $iHeader, htmlspecialchars_decode($data['Chain'], ENT_QUOTES), $bodyFormat);
$iHeader++;
$sheet->write($iRow, $iHeader, htmlspecialchars_decode($data['Channel'], ENT_QUOTES), $bodyFormat);
$iHeader++;
$sheet->write($iRow, $iHeader, htmlspecialchars_decode($data['Outlet'], ENT_QUOTES), $bodyFormat);
$iHeader++;
$sheet->write($iRow, $iHeader, $data['SFDate'], $bodyFormat);
$iHeader++;
$totalSalesStart = $alphabates[$iHeader];
if( count($productListDetails) > 0 )
{
$productColStart = $iHeader;
foreach ($productListDetails as $product)
{
$sheet->write($iRow, $iHeader, "SUMIFS(tams_database!Q:Q; tams_database!I:I;".$alphabates[$iHeader]."$1; tams_database!U:U; E$iRow; tams_database!X:X; D$iRow)", $bodyFormat, ExcelFormat::AS_FORMULA);
$iHeader++;
}
}
$totalSalesEnd = $alphabates[$iHeader-1];
$sheet->write($iRow, $iHeader, "SUM($totalSalesStart$iRow, $totalSalesEnd$iRow)", $bodyFormat, , ExcelFormat::AS_FORMULA);
$iHeader++;$sheet->write($iRow, $iHeader, "SUMIFS(tams_database!T:T; tams_database!U:U; E$iRow; tams_database!X:X; D$iRow)", $bodyFormat, , ExcelFormat::AS_FORMULA);
$iHeader++;
$sheet->write($iRow, $iHeader, 1, $bodyFormat);
$iHeader++;
$sheet->write($iRow, $iHeader, 1, $bodyFormat);
$iHeader++;
$iRow++;
}
$lastColumnDaysRun = $iHeader;
}
Задача ещё не решена.
Других решений пока нет …