Newsletter Developpez.com

Inscrivez-vous gratuitement au Club pour recevoir
la newsletter hebdomadaire des développeurs et IT pro

Les API EditGrid pour vos tableurs en ligne


précédentsommairesuivant

VI. Manipulation de données

VI-A. Introduction

 

Il est possible de récupérer ou modifier des données sans avoir à afficher la grille dans l'une de vos pages.
Voici quelques-unes des fonctions qui vous seront utiles :

D'autres fonctions existent bien sûr, mais celles-ci nous suffiront dans notre exemple.

VI-B. Lister les feuilles d'un document

Les méthodes que nous allons désormais utiliser se réfèrent les unes aux autres, c'est pourquoi nous allons voir d'un seul coup plusieurs d'entre elles, qui sont, je l'espère, facilement compréhensibles.

Comme d'habitude, insérez le code suivant dans votre fichier EGrid.php :

 
Sélectionnez

/** Obtenir la liste des feuilles d'un document
* @param        [string]    nom du document
* @return		[array]	    tableau d'objets worksheet
*/
function getSheet($name) {

global $config;

$workbook_name = $config['workspace'] . "/$name";

$result = $this->call(
	'worksheet.list', 
	array('workbook'	=>	$workbook)
);
if ($result->hasError()) trigger_error($result->getError()->toString(), E_USER_ERROR);

// construction du tableau
$tSheet = array();
foreach ($result->getValue() as $sheet) {
	$tSheet[] = array(
		'id'	=>	$sheet->id,
		'path'	=>	$sheet->path,
		'name'	=>	$sheet->name,
		'index'	=>	$sheet->index,
	);
}
return $tSheet;
}
?>

Nous avons utilisé la fonction worksheet.list.

VI-C. Récupérer le contenu d'une feuille

Nous utiliserons la fonction getSheet() que nous venons de définir, et la fonction cell.list.

 
Sélectionnez

/** Obtenir le contenu d'une ou plusieurs cellules
* @param        	[string]	nom du document
* @param		[string]	nom de la feuille (sheet)
* @param		[string]	marque début des données à récupérer ex: "A1")
* @param		[string]	marque fin des données à récupérer ex: "C4")
* @return		[array]	tableau d'objets cell
*/
 function getCell($name $worksheet, $cellFrom, $cellTo) {
	global $config;
	
	$workbook_name = $config['workspace'] . "/$name";
	$result = $this->call(
		'cell.list', 
		array(
			'workbook'	=> $workbook, 
			'range'		=> "$worksheet!$cellFrom:$cellTo",
		)
	);
	if ($result->hasError()) trigger_error($result->getError()->toString(), E_USER_ERROR);

	// construction du tableau
	$tCell = array();
	foreach ($result->getValue() as $cell) {
		$tCell[] = array(
			'col'		=>	$cell->col,
			'row'		=>	$cell->row,
			'input'		=>	$cell->input,
			'display'		=>	$cell->display,
			'value'		=>	$cell->value,
			'sheet'		=>	$cell->sheet,
		);
	}
	return $tCell;
 }
?>

VI-D. Modifier un document

 
Sélectionnez

/** Insérer du contenu dans un document 
* @param		[string]	nom du workbook
* @param		[string]	range
* @param		[array]	cellules (objets cell)
* @return		[bool]	vrai / faux
*/
function insertData($name, $range, $cells) {
	global $config;

	$workbook = $config['workspace'] . "/$name";
	
	$xml = "<list>";
	foreach ($cells as $c){ 
		
	  $xml .= "<cell>
		<value>".$c['value']."</value>
		<row>".$c['row']."</row>
		<col>".$c['col']."</col>
		<sheet>".$c['sheet']."</sheet>
		<display>".$c['display']."</display>
		<input>".$c['input']."</input>
		</cell>"; 
		
	}
	$xml .= "</list>";
	$xml = utf8_encode($xml);
	
	$workbook = $this->call(
		"cell.set",
		array('workbook' => $workbook,'range'=>$range,'s' => $config->EditGrid['sessionKey']),
		$xml
	);
	if ($workbook->hasError()) trigger_error($workbook->getError()->toString(), E_USER_ERROR);

	return true;
}
?>

VI-E. Exemple récapitulatif

Nous avons nos méthodes, reste à nous en servir !

Nous allons voir maintenant comment fonctionnent nos méthodes.
Nous allons :

  1. instancier un objet EditGrid
  2. lister toutes les feuilles d'un document
  3. afficher le contenu d'une partie du document à l'écran
 
Sélectionnez

<?php 
$config = array (
	'appKey'       		=>	'xxxxxxxxxxxxxxxxxxxxxxxxxxxxx',
	'user'			=>	'user/monnom',
	'sessionKey'       	=>	'xxxxxxxxxxxxxxxxxxxxxxxxxxxxx',
	'authToken'		=>	'xxxxxxxxxxxxxxxxxxxxxxxxxxxxx',	// depuis http://www.EditGrid.com/developer/sessionkey
	'name'			=>	'mondocdetest',
	'workspace'		=>	'/user/monnom',
	'workbook'		=>	'',
);

//
// appel des classes
//
require 'includes/editgrid.php';
require 'includes/EGrid.php';

//
// instanciation de la classe
//
$editgrid = new EGrid($config['editgrid']['sessionKey']);  

 
// listons les feuilles du document
$tFeuille = $editgrid>getSheet($config['name']);
echo 'Voici la liste des feuilles :';
foreach ($tFeuille as $feuille) {
	echo 'La feuille dont le nom est ' . $feuille['name'];
	echo ' a pour identifiant : '.$feuille['id'];
	echo '<br />';
}


// récupérons le contenu des cellules A1 et B1 de notre première feuille
$tCell = $editGrid->getCell($config['name'], $tFeuille[0], 'A1', 'B1';
echo 'Voici le contenu de la feuille '.$tFeuille[0]['name']. ': ';
foreach ($tCell as $cell) {
	echo "la cellule dont les coordonnées sont ({$cell['row']}, {$cell['col']}) 
	a la valeur [$cell['value']}<br />";
}

précédentsommairesuivant

  

Copyright © 2009 Jean-François Lépine. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc. sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.