excel — проблема форматирования ячеек с файлом * .xlsx в PHP + libxl

У меня есть 2 разные проблемы здесь.

  1. Форматирование работает нормально с форматом filename.xls, но не
    работа с форматом файла filename.xlsx (Microsoft Office 2007)

  2. Я пытался перейти на версию файла .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;
}

0

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]