Export xlsx с разбивкой на файлы учитывая лимит строк

Рейтинг: 0Ответов: 1Опубликовано: 08.01.2023

Есть небольшой код, который экспортирует в xlsx данный с базы данных. Все работает нормально.

include_once("xlsxwriter.class.php");
$sFileName = "FILE";

$save = $sFileName . ".xlsx";

$header = array(
'Бренд' => 'string',
'Артикул' => 'string',
'Наименование' => 'string',
'Описание' => 'string',
'Количество' => 'string',
'Цена' => 'price'
);
        
        $sql = mysql_query("select * from price", Base::$db->_connectionID);
        
        $writer = new XLSXWriter();
        $writer->writeSheetHeader('Sheet1', $header);
        $writer->setAuthor($sFileName);
        
        while ($aValue = mysql_fetch_array($sql)) {

            $aOut   = array();
                            $aOut[] = $aValue['brand'] ;
                            $aOut[] = $aValue['artikul'];
                            $aOut[] = $aValue['title'];
                            $aOut[] = $aValue['descriptions'];
                            $aOut[] = $aValue['stock'];
                            $aOut[] = $aValue['price'];         
        
          $writer->writeSheetRow('Sheet1', $aOut);
          
          }       
              
 $writer->writeToFile($save);

Как сделать разбивку на части?

К примеру 500 строк в один файл и далее уже вывод: FILE_1.xlsx, FILE_2.xlsx итд.

Ответы

▲ 0

Вроде так должно работать

include_once("xlsxwriter.class.php");

$sFileName = "FILE";
$header = array(
    'Бренд' => 'string',
    'Артикул' => 'string',
    'Наименование' => 'string',
    'Описание' => 'string',
    'Количество' => 'string',
    'Цена' => 'price'
);

$sql = mysql_query("select * from price", Base::$db->_connectionID);

$writer = new XLSXWriter();
$writer->writeSheetHeader('Sheet1', $header);
$writer->setAuthor($sFileName);

$i = 1;
$f = 1;

while ($aValue = mysql_fetch_array($sql)) {
    if($i > (500 * $f)){
        $sFileName = "FILE_".$f;
        $f++;
    }
    $aOut   = array();
    $aOut[] = $aValue['brand'] ;
    $aOut[] = $aValue['artikul'];
    $aOut[] = $aValue['title'];
    $aOut[] = $aValue['descriptions'];
    $aOut[] = $aValue['stock'];
    $aOut[] = $aValue['price'];         
    
    $writer->writeSheetRow('Sheet1', $aOut);

    $writer->writeToFile($sFileName . ".xlsx");

    $i++;
}