Lotus Symphony is the open source alternative for Microsoft Excel. It uses the odf format. It is calculating speed is faster than the MS Excel.
The main difference between exporting to excel and symphony is a matter of 3 lines of code
response.setContentType("application/x-vnd.oasis.opendocument.spreadsheet"); response.setHeader("Cache-Control", "no-cache"); response.setHeader("Content-Disposition","attachment; filename=export.ods");
Here we are creating the writter object for getResponseWriter and formatting the data using html table tags.
var writer = facesContext.getResponseWriter(); writer.write("<table>"); writer.write("<thead><tr>"); writer.write("<td><b>Your Header</b></td>"); writer.write("</tr></thead>"); writer.write("<tbody><tr>"); writer.write("<td><b>Your Data for column1</b></td>"); writer.write("</tr></tbody>"); writer.write("</table>");
Source code for the xpage
<!--?xml version="1.0" encoding="UTF-8"?--> <![CDATA[#{javascript:var exCon = facesContext.getExternalContext(); var writer = facesContext.getResponseWriter(); var response = exCon.getResponse(); var projects:NotesView = database.getView('Companies') var viewNav:NotesViewNavigator = projects.createViewNav(); var viewEnt:NotesViewEntry = viewNav.getFirst(); var output:string = ""; while (viewEnt != null) { output += "<tr>"; output += "<td>" + viewEnt.getColumnValues()[0]; + "</td>"; output += "<td>" + viewEnt.getColumnValues()[1] + "</td>"; output += "<td>" + viewEnt.getColumnValues()[2] + "</td>"; output += "<td>" + viewEnt.getColumnValues()[3] + "</td>"; output += "<td>" + viewEnt.getColumnValues()[4] + "</td>"; output += "</tr>"; viewEnt = viewNav.getNext(viewEnt); } response.setContentType("application/x-vnd.oasis.opendocument.spreadsheet"); response.setHeader("Cache-Control", "no-cache"); response.setHeader("Content-Disposition","attachment; filename=export.ods"); writer.write("<table>"); writer.write("<thead><tr>"); writer.write("<td><b>Branch Id</b></td>"); writer.write("<td><b>Company Name</b></td>"); writer.write("<td><b>Share value</b></td>"); writer.write("<td><b>City</b></td>"); writer.write("<td><b>Country</b></td>"); writer.write("</tr></thead>"); writer.write(output); writer.write("</table>"); writer.endDocument();}]]>
