Cacher une collone excel avec PHP

Fermé
beegees - 1 févr. 2009 à 19:52
 heidyz - 3 févr. 2009 à 16:04
Salut tout le monde,

J'ai récupéré du code PHP que j'ai adapté à mes besoins.

Ce code permet de transférer des enregistrements d'une base de données mysql vers un fichier csv.

J'aimerais juste ajouter une fonction qui me permet de cacher une colonne.

J'aimerais aussi empêcher les utilisateurs de transformer les colonnes exceptés celle qui se nomme "NOTE".

Sauriez-vous me dire comment je peux faire tout cela svp ?

Je vous laisse bien sûr mon code :

[CODE]<?php

class export2CSV{

var $delimiter = ",";
var $row_end = "\n";

function export2CSV(
$delimiter,$row_end){
$this->delimiter = $delimiter;
$this->row_end = $row_end;
}

function create_csv_file_header($data)
{
$row = "";
if (count($data)>0){
foreach ($data[0] as $key=>$val)
{
if ($row){
$row .= $this->delimiter . $key;
}else{
$row .= $key;
}
}
$row .= $this->row_end;
}
return $row;
}


function create_csv_file_row($row)
{
$res = "";
foreach ($row as $key=>$val)
{
if ($res){
$res .= $this->delimiter .'"'. $val.'"';
}else{
$res .= '"'.$val.'"';
}
}
$res .= $this->row_end;

return $res;
}

function create_csv_file($data)
{
$csv = $this->create_csv_file_header($data);
foreach ($data as $key=>$val){
$csv .= $this->create_csv_file_row($val);
}
return $csv;
}
}
?>[/CODE]

et voici les données de la classe :

[CODE]<?php
session_start();
require_once("csv.lib.php");
require_once("dbmysql.class.php");

define("DB_NAME", "pharma");
define("DB_HOST", "localhost");
define("DB_USER", "root");
define("DB_PASS", "mdp");

$db = new DbMySQL(DB_HOST, DB_NAME, DB_USER, DB_PASS);
$db->connect();

$cvs_array = $db->select("SELECT inscrits_en.ID, etudiants.MATRICULE_ET,etudiants.NOM_ET,etudiants.PRENOM_ET, inscrits_en.NOTE
FROM `inscrits_en`
LEFT JOIN `etudiants` ON ( inscrits_en.MATRICULE_ET = etudiants.MATRICULE_ET )
WHERE MNEMONIC = '" .$_SESSION["MNEMONIC"]. "' AND TYPE_DE_COURS = '" .$_SESSION["TYPE_DE_COURS"]. "' AND CATEGORIE = '" .$_SESSION['id_categories']."' ORDER BY NOM_ET, PRENOM_ET");

$db2csv = new export2CSV(";","\n");

$csv = $db2csv->create_csv_file($cvs_array);

echo " ";



header("Content-type: application/vnd.ms-excel");
header("Content-Disposition: attachment; filename=mysql_users.csv");

echo $csv;

?>
[/CODE]

Merci d'avance pour l'aide.

beegees
A voir également:

1 réponse

Bonjour,
je n'ai peut-être pas bien compris mais ...

Comme il s'agit d'un fichier csv (donc texte), il n'ya pas de possibilité d'y inclure ce genre de fonctionnalité.
Pour cela, il faudrait au moins générer un vrai fichier au format excel.

J'utilise pour cela : https://pear.php.net/package/Spreadsheet_Excel_Writer
qui permet de générer un vrai fichier excel.
Possibilités de formatage, taille des colonnes, bordure, ...


Pour Excel 2007, https://archive.codeplex.com/ est encore mieux.
0