aboutsummaryrefslogtreecommitdiff
path: root/src/org/traccar/reports/Summary.java
diff options
context:
space:
mode:
authorAnton Tananaev <anton.tananaev@gmail.com>2016-10-20 16:46:17 +1300
committerGitHub <noreply@github.com>2016-10-20 16:46:17 +1300
commit504969d034dce57ebdc85800e051ee918024ef7f (patch)
treeaf3f19ac3bfd02274cc34de3fbb296302cd8631a /src/org/traccar/reports/Summary.java
parentf64840b9e85d4869c92e9f20a2f5043522ad4008 (diff)
parent45302036168fe3adf1d9d184cd68e92e15dd3b1f (diff)
downloadtrackermap-server-504969d034dce57ebdc85800e051ee918024ef7f.tar.gz
trackermap-server-504969d034dce57ebdc85800e051ee918024ef7f.tar.bz2
trackermap-server-504969d034dce57ebdc85800e051ee918024ef7f.zip
Merge pull request #2448 from Abyss777/export_excel
Implement export reports to excel
Diffstat (limited to 'src/org/traccar/reports/Summary.java')
-rw-r--r--src/org/traccar/reports/Summary.java29
1 files changed, 22 insertions, 7 deletions
diff --git a/src/org/traccar/reports/Summary.java b/src/org/traccar/reports/Summary.java
index d4171f644..14f8b7839 100644
--- a/src/org/traccar/reports/Summary.java
+++ b/src/org/traccar/reports/Summary.java
@@ -16,17 +16,23 @@
*/
package org.traccar.reports;
+import java.io.FileInputStream;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.OutputStream;
import java.sql.SQLException;
+import java.util.ArrayList;
import java.util.Collection;
import java.util.Date;
import javax.json.Json;
import javax.json.JsonArrayBuilder;
+import org.jxls.transform.poi.PoiTransformer;
+import org.jxls.util.JxlsHelper;
import org.traccar.Context;
import org.traccar.model.Position;
import org.traccar.reports.model.SummaryReport;
-import org.traccar.web.CsvBuilder;
import org.traccar.web.JsonConverter;
public final class Summary {
@@ -78,14 +84,23 @@ public final class Summary {
return json.build().toString();
}
- public static String getCsv(long userId, Collection<Long> deviceIds, Collection<Long> groupIds,
- Date from, Date to) throws SQLException {
- CsvBuilder csv = new CsvBuilder();
- csv.addHeaderLine(new SummaryReport());
+ public static void getExcel(OutputStream outputStream,
+ long userId, Collection<Long> deviceIds, Collection<Long> groupIds,
+ Date from, Date to) throws SQLException, IOException {
+ ArrayList<SummaryReport> summaries = new ArrayList<>();
for (long deviceId: ReportUtils.getDeviceList(deviceIds, groupIds)) {
Context.getPermissionsManager().checkDevice(userId, deviceId);
- csv.addLine(calculateSummaryResult(deviceId, from, to));
+ summaries.add(calculateSummaryResult(deviceId, from, to));
+ }
+ String templatePath = Context.getConfig().getString("report.templatesPath",
+ "templates/export/");
+ try (InputStream inputStream = new FileInputStream(templatePath + "/summary.xlsx")) {
+ org.jxls.common.Context jxlsContext = PoiTransformer.createInitialContext();
+ jxlsContext.putVar("summaries", summaries);
+ jxlsContext.putVar("from", from);
+ jxlsContext.putVar("to", to);
+ JxlsHelper.getInstance().setUseFastFormulaProcessor(false)
+ .processTemplate(inputStream, outputStream, jxlsContext);
}
- return csv.build();
}
}