En suivant le tutoriel concernant l'intégration PHP JasperReports, j'avais réussi à exporter mes rapports en pdf. Malheureusement, mon but était de les sortir en Excel voici donc le code PHP modifié afin de les sortir en Excel en espérant que ça peut dépanner.
Code :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58
|
<?php
require_once ("Java.inc");
$reportsPath ="repertoirederapport";
$reportFileName = "nomdurapport";
try {
// chargement des librairies au classpath
// création de la connexion JDBC
$Conn = new Java("com.JdbcConnection");
// driver
$Conn->setDriver("com.mysql.jdbc.Driver");
// url de connexion
$Conn->setConnectString("jdbc:mysql://localhost/base");
// utilisateur
$Conn->setUser("monutilisateur");
// mot de passe
$Conn->setPassword("monmotdepasse");
// Compilation du fichier JRXML en fichier Jasper
$sJcm = new JavaClass("net.sf.jasperreports.engine.JasperCompileManager");
$report = $sJcm->compileReport($reportsPath .$reportFileName.".jrxml");
// Remplir le modèle avec les données
$sJfm = new JavaClass("net.sf.jasperreports.engine.JasperFillManager");
$print = $sJfm->fillReport($report,new Java("java.util.HashMap"),$Conn->getConnection());
$sJExp = new Java("net.sf.jasperreports.engine.JRExporterParameter");
$sJExpXLS = new Java("net.sf.jasperreports.engine.export.JRXlsExporterParameter");
$sJex = new Java("net.sf.jasperreports.engine.export.JRXlsExporter");
$sJex->setParameter($sJExp->JASPER_PRINT, $print);
$sJex->setParameter($sJExp->OUTPUT_FILE_NAME, $reportsPath .$reportFileName .".xls");
$sJex->setParameter($sJExpXLS->IS_ONE_PAGE_PER_SHEET, FALSE);
$sJex->setParameter($sJExpXLS->IS_DETECT_CELL_TYPE, TRUE);
$sJex->exportReport();
if (file_exists($reportsPath .$reportFileName.".xls")){
header('Content-disposition: attachment; filename="'.$reportFileName.'.xls"');
header('Content-Type: application/vnd.ms-excel');
header('Content-Transfer-Encoding: binary');
header('Content-Length: '. @filesize($reportsPath . $reportFileName.".xls"));
header('Pragma: no-cache');
header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
header('Expires: 0');
set_time_limit(0);
@readfile($reportsPath .$reportFileName.".xls") or die("problem occurs.");
}
} catch (JavaException $ex) {
$trace = new Java("java.io.ByteArrayOutputStream");
$ex->printStackTrace(new Java("java.io.PrintStream", $trace));
print "java stack trace: $trace\n";
}
?> |
Voilà
Thomassss