Je travaille sur un système CRM et j'ai besoin de créer des rapports dans Excel, j'ai besoin de l'option pour exporter toutes les données de la base de données Excel et aussi l'option de l'utilisateur de filtrer les données qu'ils veulent et exporter uniquement ces options. J'ai déjà l'affichage et la méthode de recherche séparés et travailler tous les deux utilisent la même vue pour voir le contenu (total ou filtré) J'ai aussi la méthode d'exportation vers Excel, mais je peux seulement exporter la base de données entière (sans les filtres). Mon idée initiale était de faire en sorte que ma vue envoie à la méthode get_excel
ce qui est affiché et ensuite la méthode génère seulement l'Excel lui-même mais je ne sais pas comment passer ce tableau de données de la vue à la méthode actuelle sur le contrôleur.Quelle est la meilleure façon d'utiliser les filtres dans un système CRUD et d'exporter un Excel
Voici les codes que je utilise:
Méthodes de controleur:
Index
montre toutes les données DB pour la vue
function index()
{
$this->template->set('title', 'Lista de Produtos');
$config = array(
"base_url" => base_url('produtos/p'),
"per_page" => 9,
"num_links" => 3,
"uri_segment" => 3,
"total_rows" => $this->model->countAll(),
"full_tag_open" => "<ul class='pagination'>",
"full_tag_close" => "</ul>",
"first_link" => FALSE,
"last_link" => FALSE,
"first_tag_open" => "<li>",
"first_tag_close" => "</li>",
"prev_link" => "Anterior",
"prev_tag_open" => "<li class='prev'>",
"prev_tag_close" => "</li>",
"next_link" => "Próxima",
"next_tag_open" => "<li class='next'>",
"next_tag_close" => "</li>",
"last_tag_open" => "<li>",
"last_tag_close" => "</li>",
"cur_tag_open" => "<li class='active'><a href='#'>",
"cur_tag_close" => "</a></li>",
"num_tag_open" => "<li>",
"num_tag_close" => "</li>"
);
$this->pagination->initialize($config);
$data['pagination'] = $this->pagination->create_links();
$offset = ($this->uri->segment(3)) ? $this->uri->segment(3):0;
$data['produtos'] = $this->model->listar('pcod','asc', $config['per_page'],$offset);
$this->template->load('layout', 'produtos_lista.phtml', $data);
}
Searh:
Utilisez les filtres à n'afficher que les données demandées
public function pesquisar() {
$this->template->set('title', 'Resultado');
$data['pagination'] = "";
$data['produtos'] = $this->model->search();
$this->template->load('layout', 'produtos_lista.phtml', $data);
}
Get_excel:
Génère le rapport dans Excel
function get_excel(){
//$this->load->library('PHPExcel');
$contator = 1;
$arquivo = './planilhas/relatorio.xlsx';
$planilha = $this->phpexcel;
$planilha->setActiveSheetIndex(0)->setCellValue('A1','Codigo');
$planilha->setActiveSheetIndex(0)->setCellValue('B1','Nome');
$planilha->setActiveSheetIndex(0)->setCellValue('C1','Descrição');
$data['produtos'] = $this->model->listar();
//echo json_encode($data['produtos']);
//die('eieeiie');
foreach($data['produtos'] as $linha) {
$contator++;
$planilha->setActiveSheetIndex(0)->setCellValue('A'.$contator, $linha->pnome);
$planilha->setActiveSheetIndex(0)->setCellValue('B'.$contator, $linha->descricao);
$planilha->setActiveSheetIndex(0)->setCellValue('C'.$contator, $linha->pcod);
}
$planilha->getActiveSheet()->setTitle('planilha 1');
$objgravar = PHPExcel_IOFactory::createWriter($planilha, 'Excel2007');
$objgravar->save($arquivo);
$this->session->set_flashdata('mensagem', "<div class='alert alert-warning'> exportação salva com sucesso</div>");
redirect('produtos');
}
Enfin mon avis:
<body>
<div class="row" >
<form action="/sistema/produtos/pesquisar" method="post">
<div class="col-sm-9">
<div class="form-group">
<input name="search" class="form-control" id="search" type="text"
placeholder="Filtrar produto " value="<?php echo $view_termo??null ;?>">
<span class="input-group-btn"></span>
</div>
</div>
<div class="col-sm-1">
<button class="btn btn-primary pull-left" type="submit">Filtrar</button>
</div>
</form>
<div class="col-sm-2">
<a data-toggle="modal" data-target="#new_produto" class="btn btn-primary ">Adicionar Produto</a>
</div>
</div>
<div id="list" class="row">
<div class="table-responsive col-md-12">
<table class="table table-striped" cellspacing="0" cellpadding="0">
<thead>
<tr>
<th>ID</th>
<th>Nome</th>
<th>Descrição</th>
<th class="actions">Ações</th>
</tr>
</thead>
<tbody>
<?php foreach ($produtos as $produto) {?>
<tr>
<td><?php echo $produto->pcod; ?></td>
<td><?php echo $produto->pnome; ?></td>
<td><?php echo $produto->descricao; ?></td>
<td class="actions">
<a title="Editar" class="btn btn-warning btn-xs" href="<?php echo base_url() . 'produtos/editar/' . $produto->pcod; ?>"> Editar</a>
<a title="Deletar" class="btn btn-danger btn-xs" href="<?php echo base_url() . 'produtos/deletar/' . $produto->pcod; ?>" onclick="return confirm('Confirma a exclusão deste registro?')">Deletar</a>
</td>
</tr>
<?php } ?>
</tbody>
</table>
<h3><?php echo $this->session->flashdata('mensagem');?></h3>
</div>
</div>
<div class="row">
<div class="col-sm-4" >
<?php echo $pagination; ?>
</div>
<div class="col-sm-2">
<a class="btn btn-primary" href="<?php echo base_url().'produtos/get_excel'?>">Export</a>
</div>
</div>
merci l'homme je vais jeter un oeil bien sûr, je cherchais une option comme celle-ci –