Ich lade eine Excel-Datei in ein Servlet hoch und versuche, den Inhalt zu lesen. Ich kann die Datei hochladen und an das Servlet senden. Über das Servlet kann ich den Upload als Teil abrufen und dessen Namen, Dateigröße und Inhaltstyp korrekt lesen. Aber wie benutze ich dieses 'Teil', um es als Datei zu lesen?Konvertieren eines Teils in Datei und Lesen der Excel-Datei
Ich versuche POI zu verwenden, um die Excel-Datei zu lesen. Es erfordert, dass ich eine Datei übergebe, also übertrage ich den "Part" und wirf ihn als Datei. Zur Laufzeit gibt es eine Exception, die mir sagt, dass Casting nicht erlaubt ist.
Ich sehe keine request.getFile-Option. Ist es irgendwie nötig, diesen Part zu einer Datei zu machen? Oder eine andere Möglichkeit, Datei anstelle von Part anzufordern. Bitte um Rat.
<!-- HTML -->
<form method="post" action="MyServlet" enctype="multipart/form-data">
<input type="file" name="file" id="file">
<button type="submit">Send</button>
</form>
//Servlet
public class ExcelUploadServlet extends HttpServlet {
protected void doPost(HttpServletRequest request,
HttpServletResponse response) throws ServletException, IOException {
Part filePart = request.getPart("file");
if (filePart != null) {
// These prints out the correct data
System.out.println(filePart.getName());
System.out.println(filePart.getSize());
System.out.println(filePart.getContentType());
}
//Need to read excel file as follows but how do I call the filepart here?
FileInputStream fis = new FileInputStream((File)filePart);//cast doesn't work
HSSFWorkbook wb = new HSSFWorkbook(fis);
HSSFSheet sheet = wb.getSheetAt(0);
for(Row row : sheet){
for (Cell cell : row){
System.out.println(cell.getStringCellValue());
}
}
}
}
Funktioniert nicht. Compiler-Fehler besagt, dass Konstruktor nicht aufgelöst werden kann. – ksv99
Meinst du, der Konstruktor von HSSFWorkbook benötigt tatsächlich einen FileInputStream anstelle eines einfachen InputStreams? In diesem Fall müssen Sie den empfangenen InputStream in eine Datei kopieren und erneut öffnen. Aber ich bezweifle: Aus dem Java-Dokument: – Heri
HSSFWorkbook (java.io.InputStream s) Companion zu HSSFWorkbook (POIFSFileSystem), erstellt dies das POI-Dateisystem um Ihren InputStream, einschließlich aller Knoten. – Heri