Bonjour, j'ai besoin de votre aide car je développe un site et je dois permettre à l'utilisateur d'exporter un grid vers excel. J'ai fini par trouvé un moyen de faire ca en créant un fichier csv dynamiquement. Mon probléme c'est que quand j'ouvre le fichier dans excel les accents sont remplacé par des caractères bizarre et en plus avant de pouvoir l'ouvrir il faut choisir le bon séparateur. Est-ce que vous avez une idée de comment je pourrai régler ces problemes? Voici le code que j'utilise pour l'instant (j'utilise GWT, smart gwt)(:
Creation du string à mettre dans le csv
Code:private StringBuilder exportCSV(boolean all) { StringBuilder stringBuilder = new StringBuilder(); // csv data in here ListGridField[] fields = grid.getFields(); for (int i = 0; i < fields.length; i++) { ListGridField listGridField = fields[i]; stringBuilder.append("\""); stringBuilder.append(listGridField.getName()); stringBuilder.append("\","); } stringBuilder.deleteCharAt(stringBuilder.length() - 1); // remove last stringBuilder.append("\n"); ListGridRecord[] recs = null; if (all) { recs = grid.getRecords(); } // else { // recs = grid.getSelection(); // } for (int i = 0; i < recs.length; i++) { ListGridRecord listGridRecord = recs[i]; ListGridField[] listGridFields = grid.getFields(); for (int j = 0; j < listGridFields.length; j++) { ListGridField listGridField = listGridFields[j]; stringBuilder.append("\""); stringBuilder.append(listGridRecord.getAttribute(listGridField .getName())); stringBuilder.append("\","); } stringBuilder.deleteCharAt(stringBuilder.length() - 1); // remove last "," stringBuilder.append("\n"); } return stringBuilder; }
Ecriture
Après avoir recu l'url on propose le telechargementCode:public String greetServer(String input) throws IllegalArgumentException { FileWriter fw; String url = ""; try { fw = new FileWriter("Result.xls"); PrintWriter pw = new PrintWriter(fw); // Write to file for the first row url = "http://127.0.0.1:8888/Result.xls"; pw.print(input); pw.flush(); // Close the Print Writer pw.close(); // Close the File Writer fw.close(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } return url; }
Si vous avez une autre méthode pour faire ca n'hesitez pasCode:serverResponseLabel.removeStyleName("serverResponseLabelError"); serverResponseLabel.setHTML(result); Window.open(result, "_blank", "");
Merci d'avance
-----