Jump to content
lordius495

Выгрузка заказов через почту. Формирование excel файла

Recommended Posts

Здравствуйте! Возникла следующая задача. Заказчик затребовал создать файл-приложение к письму которое приходит админу, чтобы загружать в старую 1с 7.7 данные по заказу. Поскольку со шлюзами старая 1с не дружит, было принято решение создать такое вот своеобразное приложение к письму в excel. Готовых модулей по этой теме я не нашел, но нашел на просторах инета код, который создавал нечто похожее.  Клиенту было нужно, чтобы в этом экселе выгружались товары списком, и я добавил  "product" =>$product['name'], . Проблема в том, что данный код создает excel, но там всего две строки (заголовок и одна строка с товаром). Подскажите, как сделать чтобы строк было много, и на каждой строке был товар в столбец? 

$data = array(
array("ORDER ID" => $order_id, 
"CONTACT PERSON"=>$order_info['shipping_firstname']." ".$order_info['shipping_lastname'],
"ADDRESS LINE1" =>$order_info['shipping_address_1'], 

"CITY" =>$order_info['shipping_city'],
 "PHONE_1"=>$order_info['telephone'], 

 "product" =>$product['name'],
 "price" =>$product['price'], 
 "WH NUMBER" =>$product['model'],
  "SKU" =>$product['sku'],
 "PIECES"=>$product['quantity'],
 "Total"=>$order_info['total']),
);



function filterData(&$str)
{
$str = preg_replace("/\t/", "\\t", $str);
$str = preg_replace("/\r?\n/", "\\n", $str);
$str = iconv("UTF-8", "WINDOWS-1251",  $str);
if(strstr($str, '"')) $str = '"' . str_replace('"', '""', $str) . '"';
}

// file name for download
$fileName = $order_id.".xls";$flag = false;
foreach($data as $row) {
if(!$flag) {
// display column names as first row
echo implode("\t", array_keys($row)) . "\r\n";
$flag = true;
}
// filter data
array_walk($row, 'filterData');
$rows=  implode("\t", array_keys($row)) . "\r\n"  . implode("\t", array_values($row)) . "\r\n";file_put_contents( $fileName, $rows);
}

$mail->setTo('email of delivery company or any you need');
$mail->setFrom($this->config->get('config_email'));
$mail->setSender(html_entity_decode($order_info['store_name'], ENT_QUOTES, 'WIN-1251'));
$mail->setSubject(html_entity_decode($subject, ENT_QUOTES, 'WIN-1251'));
$mail->setHtml($this->load->view('mail/excel', $data));
$mail->setText($text);
$mail->send();

 

Share this post


Link to post
Share on other sites
Posted (edited)

..

 

Edited by anboza

Share this post


Link to post
Share on other sites

1. Так XLS файл не создается, максимум вы можете создать CSV
2. Для отправки файла в письме, нужно использовать функцию addAttachment класса Mail

3. Читайте больше документацию и лучше изучите функционал движка

Share this post


Link to post
Share on other sites
7 минут назад, Designer сказал:

1. Так XLS файл не создается, максимум вы можете создать CSV
2. Для отправки файла в письме, нужно использовать функцию addAttachment класса Mail

3. Читайте больше документацию и лучше изучите функционал движка

 

Дело в том, что XLS в этом примере создается в корень сайта. К письму я просто креплю ссылку на этот файл. Название заказа.xls. Мне бы просто получить подсказку, как сделать так, чтобы в таблице экселя создавался не одна строка с товаром, а  чтобы были все товары. 

 

Не пойму что нужно переделать здесь 

function filterData(&$str)
{
$str = preg_replace("/\t/", "\\t", $str);
$str = preg_replace("/\r?\n/", "\\n", $str);
$str = iconv("UTF-8", "WINDOWS-1251",  $str);
if(strstr($str, '"')) $str = '"' . str_replace('"', '""', $str) . '"';
}

или здесь 

 

 

// filter data
array_walk($row, 'filterData');
$rows=  implode("\t", array_keys($row)) . "\r\n"  . implode("\t", array_values($row)) . "\r\n";file_put_contents( $fileName, $rows);
}

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
You are posting as a guest. If you have an account, please sign in.
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.


  • Recently Browsing   0 members

    No registered users viewing this page.

×

Important Information

On our site, cookies are used and personal data is processed to improve the user interface. To find out what and what personal data we are processing, please go to the link. If you click "I agree," it means that you understand and accept all the conditions specified in this Privacy Notice.