Laravel по-русски

Русское сообщество разработки на PHP-фреймворке Laravel.

Ты не вошёл. Вход тут.

#1 25.11.2014 20:50:22

nemocoder
Откуда: Almaty, Kazakhstan
Сообщений: 69

Laravel-Excel

http://www.maatwebsite.nl/laravel-excel/docs

кто нибудь использовал это?

мне нужно импорт/экспорт Excel файла а так же показать и возможность редактировать, у кого нибудь встречалась такая задача ?

Не в сети

#2 27.11.2014 16:01:48

nemocoder
Откуда: Almaty, Kazakhstan
Сообщений: 69

Re: Laravel-Excel

Так что ни кто не может помочь?

Не в сети

#3 27.11.2014 18:33:23

nemocoder
Откуда: Almaty, Kazakhstan
Сообщений: 69

Re: Laravel-Excel

 
public function actionIndex()
 {
  Excel::load('public/upload/raim.xls', function($reader)
  {
   $result=$reader->select(array('data', 'name','operatory'))->get();

   //var_dump($result);

  })->get();

  
 }

тут получается я открыл xls и выбрал нужные поля

как теперь их записать в таблицу из бд?

например из формы делается же так

public function postAdd() {
        $data = Input::all();

             
        $post = SomeModel::create($data);
        
    }

Не в сети

#4 27.11.2014 23:59:07

Серго

Re: Laravel-Excel

Это засунуть в модель

public function postAdd($exelData)
{ 
	$post = SomeModel::create([
			'data' => $exelData['data'],
			'name' => $exelData['name'],
			'operatory' => $exelData['operatory']
	]);
}

это в контроллер

public function actionIndex(){
	Excel::load('public/upload/raim.xls', function($reader){

		$result=$reader->select(array('data', 'name','operatory'))->get();
	
	})->get();

	$res = Model::postAdd($retust);

	return $res
}

#5 28.11.2014 03:07:59

nemocoder
Откуда: Almaty, Kazakhstan
Сообщений: 69

Re: Laravel-Excel

Серго пишет:

Это засунуть в модель

public function postAdd($exelData)
{ 
	$post = SomeModel::create([
			'data' => $exelData['data'],
			'name' => $exelData['name'],
			'operatory' => $exelData['operatory']
	]);
}

это в контроллер

public function actionIndex(){
	Excel::load('public/upload/raim.xls', function($reader){

		$result=$reader->select(array('data', 'name','operatory'))->get();
	
	})->get();

	$res = Model::postAdd($retust);

	return $res
}

не работает

Не в сети

#6 02.12.2014 02:25:37

nemocoder
Откуда: Almaty, Kazakhstan
Сообщений: 69

Re: Laravel-Excel

что я делаю не так ?

 
$dir = '/uploads'.date('/Y/m/d/');
        
        do {
            $filename = str_random(30).'.xls';
        } while (File::exists(public_path().$dir.$filename));

        Input::file('file')->move(public_path().$dir, $filename);
        
        return Response::json(array('filelink' => $dir.$filename));
        Excel::load(public_path().$dir.$filename, function($reader){
            ----------
}

Не в сети

#7 02.12.2014 08:46:20

nemocoder
Откуда: Almaty, Kazakhstan
Сообщений: 69

Re: Laravel-Excel

nemocoder пишет:

что я делаю не так ?

 
$dir = '/uploads'.date('/Y/m/d/');
        
        do {
            $filename = str_random(30).'.xls';
        } while (File::exists(public_path().$dir.$filename));

        Input::file('file')->move(public_path().$dir, $filename);
        
        return Response::json(array('filelink' => $dir.$filename));
        Excel::load(public_path().$dir.$filename, function($reader){
            ----------
}

понял что совсем ни то, как правильнее сразу лоадить файл без загрузки на серв

Изменено nemocoder (02.12.2014 08:46:47)

Не в сети

#8 03.12.2014 01:29:24

nemocoder
Откуда: Almaty, Kazakhstan
Сообщений: 69

Re: Laravel-Excel

решение
роут

Route::post('/upload', 'ImportController@uploadFile');

контроллер

public function uploadFile()
	{		
        $dir = '/uploads'.date('/Y/m/d/');
        
        do {
            $filename = str_random(30).'.xls';
        } while (File::exists(public_path().$dir.$filename));

        Input::file('file')->move(public_path().$dir, $filename);
        
        Excel::load(public_path().$dir.$filename , function($reader)
        	{
        		$result = $reader->get();
        		do Something
        	})->get();

	}

форма

{{ Form::open(array('url' => '/upload', 'action' => 'ImportController@uploadFile', 'method' => 'post', 'role' => 'form', 'class' => 'form-horizontal', 'files' => true)) }}
                                @include('temp/form')

                                <div class="form-group">
                                    <div class="col-sm-2">&nbsp;</div>
                                    <div class="col-sm-5">
                                        <button type="submit" class="btn btn-primary submit-button">Импорт</button>
                                    </div>
                                </div>
{{ Form::close() }}

//form
{{ Form::label('file', 'Excel/XLS:') }}
{{ Form::file('file')}}

Не в сети

#9 05.12.2014 13:29:20

Re: Laravel-Excel

nemocoder, как в бд заносишь таблицу ? покажи код,тоже делаю такую фишку интересно.

Не в сети

#10 06.12.2014 10:57:05

nemocoder
Откуда: Almaty, Kazakhstan
Сообщений: 69

Re: Laravel-Excel

Nelzz пишет:

nemocoder, как в бд заносишь таблицу ? покажи код,тоже делаю такую фишку интересно.

легко
контроллер

.......
Excel::load(public_path().$dir.$filename , function($reader)
        	{
        		$result = $reader->get();
        		foreach ($result as $key => $value) {
					//для проверки можешь с перва вывести так посмотреть берутся ли значения 
                                        //echo $value->date.'----'.$value->name.'----'.$value->adress_to.'----'.$value->operator.'<br>';
					
					//Model->твоя модель
                                          $data = Model::postAdd($value);


        		}
        	})->get();
        //return Redirect::to('/io')->with('success', 'You have been importing xls');

модель

protected $table = 'твоя таблица';
protected $fillable = array(
		
        'date', 
        'name',
        'adress_to',
        'operator',
        
        
    );
public static function postAdd($exelData)
{ 
	$post = Import::create([
			'date' => $exelData['date'],
			'name' => $exelData['name'],
			'adress_to' => $exelData['adress_to'],
			'operator' => $exelData['operator']
			
	]);
		return $post;
}

Не в сети

#11 06.12.2014 14:41:39

Re: Laravel-Excel

nemocoder пишет:
Nelzz пишет:

nemocoder, как в бд заносишь таблицу ? покажи код,тоже делаю такую фишку интересно.

легко
контроллер

.......
Excel::load(public_path().$dir.$filename , function($reader)
        	{
        		$result = $reader->get();
        		foreach ($result as $key => $value) {
					//для проверки можешь с перва вывести так посмотреть берутся ли значения 
                                        //echo $value->date.'----'.$value->name.'----'.$value->adress_to.'----'.$value->operator.'<br>';
					
					//Model->твоя модель
                                          $data = Model::postAdd($value);


        		}
        	})->get();
        //return Redirect::to('/io')->with('success', 'You have been importing xls');

модель

protected $table = 'твоя таблица';
protected $fillable = array(
		
        'date', 
        'name',
        'adress_to',
        'operator',
        
        
    );
public static function postAdd($exelData)
{ 
	$post = Import::create([
			'date' => $exelData['date'],
			'name' => $exelData['name'],
			'adress_to' => $exelData['adress_to'],
			'operator' => $exelData['operator']
			
	]);
		return $post;
}

Спасибо. Кстати я тоже из Казахстана, Атырау smile

Не в сети

#12 06.12.2014 17:28:10

nemocoder
Откуда: Almaty, Kazakhstan
Сообщений: 69

Re: Laravel-Excel

Nelzz пишет:

Спасибо. Кстати я тоже из Казахстана, Атырау smile

Круто) Я из Уральска, живу, работаю и учусь в Алмате smile

Не в сети

#13 12.02.2015 15:24:47

Re: Laravel-Excel

я попробовал импортировать файл прямо в routes.php и в результате на странице получил крякозябры

Route::get('xls', function ()  
{
  Excel::load('app/database/xls/categories.xlsx', function($reader)
  {
   $result=$reader->select(array('id', 'parent_id','level','title','sef','body',
  	'image','meta_title','keywords','description'))->get();

   var_dump($result);

  })->get();

  
 }
	);

Не в сети

#14 15.02.2015 22:16:31

Re: Laravel-Excel

по-моему вы занимаетесь какой-то фигней
всё вообще не так делается

<?php

class XLSSeeder extends Seeder {

	public function run()
	{
		$xls = 'app/database/seeds/seeder.xlsx';
		$book = Excel::load($xls, 'UTF-8')->all();

		foreach($book as $sheet)
		{   
			if ($sheet->getTitle() === 'categories') 
			{	Category::truncate();
				foreach($sheet as $row)
				{
					$category = Category::create([
						'id' => $row->id,
						'parent_id' => $row->parent_id,
						'level' => $row->level,
						'title' => $row->title,
						'sef' => $row->sef,
						'body' => $row->body,
						'image' => $row->image,
						'metatitle' => $row->metatitle,
						'metakey' => $row->metakey,
						'metadesc' => $row->metadesc,
						]);
    			}
    		}


    		if ($sheet->getTitle() === 'menu') 
			{	Menu::truncate();
				foreach($sheet as $row)
				{
					$menu = Menu::create([
						'id' => $row->id,
						'parent_id' => $row->parent_id,
						'level' => $row->level,
						'title' => $row->title,
						'route' => $row->route,
						'class' => $row->class,
						'metatitle' => $row->metatitle,
						'metakey' => $row->metakey,
						'metadesc' => $row->metadesc,
						]);
    			}
    		}
    	}
	}
}

Не в сети

#15 16.02.2015 20:09:51

nemocoder
Откуда: Almaty, Kazakhstan
Сообщений: 69

Re: Laravel-Excel

schel4ok пишет:

по-моему вы занимаетесь какой-то фигней
всё вообще не так делается

<?php

class XLSSeeder extends Seeder {

	public function run()
	{
		$xls = 'app/database/seeds/seeder.xlsx';
		$book = Excel::load($xls, 'UTF-8')->all();

		foreach($book as $sheet)
		{   
			if ($sheet->getTitle() === 'categories') 
			{	Category::truncate();
				foreach($sheet as $row)
				{
					$category = Category::create([
						'id' => $row->id,
						'parent_id' => $row->parent_id,
						'level' => $row->level,
						'title' => $row->title,
						'sef' => $row->sef,
						'body' => $row->body,
						'image' => $row->image,
						'metatitle' => $row->metatitle,
						'metakey' => $row->metakey,
						'metadesc' => $row->metadesc,
						]);
    			}
    		}


    		if ($sheet->getTitle() === 'menu') 
			{	Menu::truncate();
				foreach($sheet as $row)
				{
					$menu = Menu::create([
						'id' => $row->id,
						'parent_id' => $row->parent_id,
						'level' => $row->level,
						'title' => $row->title,
						'route' => $row->route,
						'class' => $row->class,
						'metatitle' => $row->metatitle,
						'metakey' => $row->metakey,
						'metadesc' => $row->metadesc,
						]);
    			}
    		}
    	}
	}
}

почему это, мой метод  фигня ? делай как можешь wink а если не получилось так это не у меня руки сам понимаешь

Изменено nemocoder (16.02.2015 20:16:25)

Не в сети

#16 11.10.2015 15:35:07

Arat
Откуда: Киев
Сообщений: 116

Re: Laravel-Excel

А кто сталкивался с кодировокой текста при экспорте? База в utf-8, но на выходе в документе Excel кодировка сбивается… Текст кириллица. Как быть?

Не в сети

#17 01.11.2015 19:40:24

Arat
Откуда: Киев
Сообщений: 116

Re: Laravel-Excel

Народ, с кодировкой есть решение?

Не в сети

#18 02.11.2015 01:48:46

Artdevue
Откуда: Kiev
Сообщений: 119
Сайт

Re: Laravel-Excel

Arat пишет:

}%Народ, с кодировкой есть решение?

Использовал dompdf в проектах, там тоже была проблема с кодировкой, пока не залил шрифты с поддержкой кириллицы

Изменено Artdevue (02.11.2015 01:49:53)


If you think it’s expensive to hire a professional to do the job, wait until you hire an amateur.

Не в сети

#19 02.11.2015 11:56:34

Arat
Откуда: Киев
Сообщений: 116

Re: Laravel-Excel

А как подключить шрифты? О_о

Не в сети

Подвал раздела