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 :
/**
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.
/**
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▲
/**
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 :
- Instancier un objet EditGrid ;
- Lister toutes les feuilles d'un document ;
- Afficher le contenu d'une partie du document à l'écran.
<?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 />"
;
}