How to get download csv Datei mit java-servlet?
Ich habe die Beispiel-java-servlet-Datei.aber es ist der export in eine lokale Datei.Aber ich muss den download der csv-Datei, wenn der hit-download-button ?
hier ist die servlet-Klasse , welchen code muss ich hier hinzufügen, werden für den download der csv-Datei ?
import java.io.*;
import java.net.*;
import javax.servlet.*;
import javax.servlet.http.*;
public class CsvFile extends HttpServlet {
public void doGet (HttpServletRequest request,HttpServletResponse response)
throws ServletException,IOException {
try
{
PrintWriter out = response.getWriter();
String filename = "c:\\csv\\myfile.csv";
FileWriter fw = new FileWriter(filename);
fw.append("Employee Code");
fw.append(',');
fw.append("Employee Name");
fw.append(',');
fw.append("Employee Address");
fw.append(',');
fw.append("Employee Phone");
fw.append(',');
fw.append("Employee ZipCode");
fw.append('\n');
fw.append("E1");
fw.append(',');
fw.append("Vineet");
fw.append(',');
fw.append("Delhi");
fw.append(',');
fw.append("224277488");
fw.append(',');
fw.append("110085");
fw.append('\n');
fw.append("E2");
fw.append(',');
fw.append("Amar");
fw.append(',');
fw.append("Delhi");
fw.append(',');
fw.append("257765758");
fw.append(',');
fw.append("110001");
fw.append('\n');
fw.append("E3");
fw.append(',');
fw.append("Amit");
fw.append(',');
fw.append("Delhi");
fw.append(',');
fw.append("257685858");
fw.append(',');
fw.append("110005");
fw.append('\n');
fw.append("E4");
fw.append(',');
fw.append("Suman");
fw.append(',');
fw.append("Delhi");
fw.append(',');
fw.append("266447678");
fw.append(',');
fw.append("110081");
fw.append('\n');
fw.flush();
fw.close();
out.println("<b>Csv file Successfully created.</b>");
}
catch (Exception ex) {
ex.printStackTrace ();
}
}
}
Sind Sie versuchen, in Excel importieren ?
InformationsquelleAutor Nancy | 2010-07-02
Du musst angemeldet sein, um einen Kommentar abzugeben.
Schreiben Sie in eine Datei statt auf den HTTP-Antwort.
HttpServletResponse#getWriter()
.Content-Disposition
headerattachment
zu zwingen, eine Speichern Als Dialog im webbrowser, eventuell zusammen mit einerfilename
Attribut. Es gibt einen (großen?) Nachteil: der MSIE-browser nicht verwenden Sie die angegebenenfilename
als tatsächliche Datei-name in der Speichern Als Dialog, es wird stattdessen der Letzte Teil des pathinfo der URL.Content-Type
headertext/csv
zu beauftragen, der webbrowser auf welche Art von Datei es ist so, dass er die richtigen zugeordneten Anwendung, wenn der enduser wählt, um Öffnen statt Speichern. In der Regel, auf einem Windows-Rechner MS-Excel ist standardmäßig in Zusammenhang mit diesem content-Typ.Zur Erreichung dieser Anforderungen, müssen Sie erstellen eine
CsvServlet
die nicht grundsätzlich in derdoGet()
Methode.Das ist alles. Die
flush()
undclose()
sind übrigens nicht unbedingt notwendig, aber nützlich, wenn Sie vermeiden wollen, dass etwas anderes, die weiter in der Aufrufkette ist das Anhängen etwas an der response-body (das sollte streng nicht passieren, aber es wäre nur zu emittierenIllegalStateException
s und/oderIOException
s in den server-logs statt malforming die Antwort.Ordnen Sie dann die
CsvServlet
imweb.xml
mit einemurl-pattern
von/csv/*
und es aufrufen, indem http://example.com/context/csv/filename.csv.Sagte, Sie würde wahrscheinlich eher wie ein echter CSV-formatter/Schriftsteller, die schön schreibt ein
String[][]
oder eineList<List<String>>
zu einemOutputStream
oderWriter
hiermit unter Beachtung der CSV-Formatierung Regeln. Es kann passieren, dass ein Feld einen Wert enthält selbst ein Zitat oder ein Komma, CSV-format würde dann brechen.Siehe auch:
InformationsquelleAutor BalusC
Inhaltstyp
application/vnd.ms-excel
- und response-header content-dispositionresponse.setHeader("Content-Disposition", "attachment; filename=\"myfile.csv\"");
InformationsquelleAutor Teja Kantamneni