Java - einfügen von Zeilen in eine db-Tabelle nach excel-Datei Lesen
Ich in der Lage bin zu Lesen Sie die excel-Datei Daten aus dem code unten, aber ich bin nicht in der Lage, um die Logik hinter, wie man excel-Daten in der Reihenfolge speichern, in der POJO-Klasse nach dem Lesen der excel-Datei.
Kurz gesagt: ich habe Verwirrung, wie Sie schicken diese Lesen von excel-Daten an meine model-Klassen gespeichert werden, die in meine Datenbank-Tabelle?
Den folgenden code korrekt gedruckt, die excel-Zeilen in meiner Eclipse-Konsole:
..............
..............
public String execute()
{
try
{
String filePath=servletRequest.getSession().getServletContext().getRealPath("/");
File fileToCreate= new File(filePath,this.excelDataFileName);
FileUtils.copyFile(this.excelData, fileToCreate);
UploadExcel obj=new UploadExcel();
obj.readExcel(excelData.getAbsolutePath());
}
catch(Exception e){
e.printStackTrace();
addActionError(e.getMessage());
return INPUT;
}
return SUCCESS;
}
/*
*Method to read the each sheet ,row & column of the excel sheet of the uploaded xls file
*/
public void readExcel(String filePath)
{
try
{
FileInputStream file=new FileInputStream(new File(filePath));
//Getting the instance for XLS file
HSSFWorkbook workbook=new HSSFWorkbook(file);
//Get First sheet from the workbook
HSSFSheet sheet=workbook.getSheetAt(0);
ArrayList myList = new ArrayList();
//Iterate start from the first sheet of the uploaded excel file
Iterator<Row> rowIterator = sheet.iterator();
while(rowIterator.hasNext())
{
Row row=rowIterator.next();
if(row.getRowNum()==0)
{
continue;//skip to read the first row of file
}
//For each row, iterate through each coulumns
Iterator<Cell> cellIterator=row.cellIterator();
while(cellIterator.hasNext())
{
Cell cell=cellIterator.next();
if(cell.getColumnIndex()==0)
{
continue;
}
switch(cell.getCellType())
{
case Cell.CELL_TYPE_BOOLEAN:
System.out.print(cell.getBooleanCellValue() + "\t\t");
//myList.add(cell.getBooleanCellValue());
break;
case Cell.CELL_TYPE_NUMERIC:
System.out.print(cell.getNumericCellValue()+ "\t\t");
// myList.add(cell.getNumericCellValue());
break;
case Cell.CELL_TYPE_STRING:
System.out.print(cell.getStringCellValue()+ "\t\t");
//myList.add(cell.getStringCellValue());
break;
}
}
System.out.println("");
}
file.close();
FileOutputStream out=
new FileOutputStream(new File(filePath));
workbook.write(out);
out.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}
In der Ausgabe der Konsole:
TEXTit 6695 PROSPECT RD Nova Scotia B3z 3t1
row2sdfsda 61695 P sfsdfdsf 23B3z 3t1
Was ich dachte ist,
Ich habe, um die Zeile eins nach dem anderen, und ich werde fügen Sie dieser Zeile die Daten zu meinem POJO-Klasse-Objekt und senden Sie es an dao , und schließlich verwenden saveOrupdate(tableobj)
von hibernate-Methode zum speichern der Daten in meine db-Tabelle.
Aber ich konnte nicht denken können, wie kann ich diese Daten auf meinem Pojo-Klasse?
Hoffe, jemand kann mir hier helfen.
- Senden Sie nicht jede Zeile auf die DAO-one pro. Es wird schrecklich langsam..Man kann nur passieren in einer Liste der Objekt-Typ und Tue es in 1 reinigen Sie die Transaktion mit einer Batchdatei einfügen
- können Sie bitte post eine Antwort, wie Sie vorgeschlagen. Ich Lerne struts2 hibernate, ich konnte nicht die Dinge, die Sie sagte, in diesem Kommentar.
- ich code geschrieben hier hier klicken als Sie schlug in Ihrem Kommentar, aber es ist nicht das einfügen in meine db, weder ist es zeigt keine Fehler
Du musst angemeldet sein, um einen Kommentar abzugeben.
Können Sie injizieren/pass Verweis auf die DAO in UploadExcel Klasse. Dann, wenn in readExcel () - Methode können Sie neue ENTITÄT und füllen Sie mit Werten.
Schließlich Sie einfügen/createOrUpdate Ihre Einheit durch die DAO.
* EDIT *
Code zu erklären Kommentar
Entität ist nur ein Beispiel von benutzerdefinierten Entität, die Modelle gelesenen Daten aus excel.
Wenn zum Beispiel Ihre excel enthält Daten über den Kunden können Sie dann erstellen
customer-Entität.
Dann schicken Sie dieser Person gefüllt mit excel-Daten zu Ihrem DAO (die Verwaltung der Kunden-Tabelle), und legen Sie bestimmte Entität in der DB.
* EDIT2 *
Entfernen "dao".saveOrUpdateCompany(Firma);" vom folgenden code:
Möchten Sie eine neue Einheit PRO ZEILE, jetzt erstellen Sie einfach eine Person in den Anfang der Klasse
Kommentare Lesen folgenden code
* EDIT3 *
Ich denke, das sollte endlich Arbeit
Entity
gehört?If it is possible, please post almost complete code, for me. I have shown all my model,& pojo in above question
. Ich bin neu in diesem , versuchen zu lernen, aber struct, die hier aus letzten 2 Tage.List<Company> companies = new ArrayList<Company>();
... Nun, lassen Sie mich versuchen, es zu tun wie diese , wenn ich wieder irgendein problem im Zusammenhang mit dieser,dann darf ich Sie bitten, hier...Rollback:org.hibernate.MappingException: Unknown entity: java.util.ArrayList
ich versuchte vorbei ` dao.saveOrUpdateCompany(Unternehmen);` von Aktion und dann in meine DAO , ich definiere mein DAO-Methode, beginnend mitpublic int saveOrUpdateCompany(List<Company> companies){....}
aber DAO wirft Fehlercompanies.size()
im dao-Methode, sondern zeigt seine Größe als nullSystem.out.println("row name-"+company.getName());
und es ist der Druck der gültigen Reihen von Namen. Ich denke, es gibt problem während der Einstellung von diesem Unternehmen zu compines Liste wie diesecompanies.add(company);
und ich versuchte, zu druckenSystem.out.println("row name-"+companies.get(2));
aber zeigte einige pojo_out in einigen string-formatgetCell((short) 1))))
? Ich habe aktualisiert mein Frage oben , ich habe meine POJO und ein Modell-Methode. Bitte helfen Sie mir mit Ihre Antwort, indem mehr code.New update code
. Bitte helfen