|
|
@@ -157,7 +157,6 @@ class Route_ExportTableAjax extends RouteBase {
|
|
|
DBG::nicePrint($acl, '$acl');
|
|
|
}
|
|
|
|
|
|
-
|
|
|
$csvFileName = "Tabela-" . $acl->getName() . "-" . date("Y-m-d_H_s");
|
|
|
$labels = array();
|
|
|
foreach ($toExportFields as $fieldName) {
|
|
|
@@ -237,16 +236,40 @@ class Route_ExportTableAjax extends RouteBase {
|
|
|
}
|
|
|
function _exportToXLSX($acl, $items, $toExportFields, $format = 'xlsx') {
|
|
|
// https://github.com/mk-j/PHP_XLSXWriter
|
|
|
+
|
|
|
+ $DBG_OUTPUT = 0;
|
|
|
+ if ($DBG_OUTPUT) {
|
|
|
+ $items = array_slice($items, 0, 10);
|
|
|
+ DBG::nicePrint($acl, '$acl');
|
|
|
+ }
|
|
|
+
|
|
|
Lib::loadClass('Vendor_XLSXWriter');
|
|
|
$csvFileName = "Tabela-" . $acl->getName() . "-" . date("Y-m-d_H_s");
|
|
|
$labels = array();
|
|
|
+ $columnTypes = array();
|
|
|
+ // string @
|
|
|
+ // integer 0
|
|
|
+ // date YYYY-MM-DD
|
|
|
+ // datetime YYYY-MM-DD HH:MM:SS
|
|
|
+ // time HH:MM:SS
|
|
|
+ // price #,##0.00
|
|
|
+ // dollar [$$-1009]#,##0.00;[RED]-[$$-1009]#,##0.00
|
|
|
+ // euro #,##0.00 [$€-407];[RED]-#,##0.00 [$€-407]
|
|
|
foreach ($toExportFields as $fieldName) {
|
|
|
$labels[ $fieldName ] = $acl->getFieldLabel($fieldName);
|
|
|
+
|
|
|
+ $typeXLSL = 'string';
|
|
|
+ $xsdType = $acl->getXsdFieldType($fieldName);
|
|
|
+ switch ($xsdType) {
|
|
|
+ case 'xsd:double': $typeXLSL = 'price'; break;
|
|
|
+ }
|
|
|
+ $columnTypes[ $fieldName ] = $typeXLSL;
|
|
|
}
|
|
|
$xlsx = new Vendor_XLSXWriter();
|
|
|
$xlsx->writeSheetHeader('Sheet1', array_combine(
|
|
|
array_values($labels),
|
|
|
- array_map(function ($label) { return 'string'; }, $labels)
|
|
|
+ // array_map(function ($label) { return 'string'; }, $labels)
|
|
|
+ array_values($columnTypes)
|
|
|
));
|
|
|
foreach ($items as $item) {
|
|
|
$row = array_map(function ($fieldName) use ($item) {
|
|
|
@@ -255,8 +278,10 @@ class Route_ExportTableAjax extends RouteBase {
|
|
|
$xlsx->writeSheetRow('Sheet1', $row);
|
|
|
}
|
|
|
|
|
|
- header("Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet; charset=utf-8");
|
|
|
- header("Content-Disposition: attachment; filename={$csvFileName}.xlsx");
|
|
|
+ if (!$DBG_OUTPUT) {
|
|
|
+ header("Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet; charset=utf-8");
|
|
|
+ header("Content-Disposition: attachment; filename={$csvFileName}.xlsx");
|
|
|
+ }
|
|
|
$xlsx->writeToStdOut();
|
|
|
}
|
|
|
|