public classAnalysisEtoX {public static voidmain(String[] args) {try{
System.out.println("=============");//Verwenden Sie den Eingabestream, um die entsprechende Excel-Datei von der lokalen Datei abzurufen
InputStream stream = new FileInputStream("C:\Users\Administrator\Desktop\Examination Questions.xlsx");//Geben Sie den Pfad der zu generierenden XML-Datei an und erstellen Sie das Dateiobjekt
File f = new File("test.xml");// Erstellen Sie ein neues Dateiobjekt und speichern Sie die nach dem Parsen erhaltene XML in der geänderten Datei
writeXML(stream, f);//Daten in XML-Form in Text schreiben
} Catch(FileNotFoundException e) {
System.out.println("Die Datei mit dem angegebenen Pfad wurde nicht gefunden!");
e.printStackTrace();
}catch(IOException e) {//TODO Automatisch generierter Catch-Block
e.printStackTrace();
}
}private static void writeXML(InputStream stream, File f) throwsIOException {
System.out.println(“intowriterXML”);
FileOutputStream fo= new FileOutputStream(f);//Den Eingabestream abrufen
Document doc = readExcell(stream);//EXCEL-Funktion lesen
Format format = Format.getCompactFormat().setEncoding(“UTF-8”).setIndent(“”);
XMLOutputter XMLOut= new XMLOutputter(format);//Neue Zeile nach dem Element, jedes Element wird um vier Leerzeichen eingerückt
XMLOut.output(doc, fo);
fo.close();
}private staticDocument readExcell(InputStream stream) {
System.out.println("into readExcell");//Legen Sie das Stammelement fest
Element root = new Element(“tax_institutions”);
Dokument doc= newDocument(root);try{
HSSFWorkbook hw= newHSSFWorkbook(stream);//Ermitteln Sie die Anzahl der Arbeitsmappen, d. h. wie viele Blatt-Arbeitsmappen in einer Excel-Datei enthalten sind
int WbLength =hw.getNumberOfSheets();
System.out.println(“WbLength=” +WbLength);for (int i = 0; i < WbLength; i++) {
HSSFSheet shee=hw.getSheetAt(i);int length =shee.getLastRowNum();
System.out.println(“行数:” +length);for (int j = 1; j <= length; j++) {
HSSFRow row=shee.getRow(j);if (row == null) {continue;
}int cellNum = row.getPhysicalNumberOfCells();//Ermitteln Sie die Position der letzten Zelle in einer Zeile
System.out.println(“Anzahl der Spalten cellNum:” +cellNum);
Element e= null;//Legen Sie die parallelen Elemente unter das Wurzelelement
e = new Element(“tax_institution”);//Element[] es = new Element[16];
for (int k = 0; k < cellNum; k++) {
HSSFCell cell= row.getCell((short) k);
String temp=get(k);
System.out.print(k+ " " + temp + „:“);
Element item= newElement(temp);if (cell == null) {
item.setText(“”);
e.addContent(item);
cellNum++;//Wenn eine leere Spalte vorhanden ist, erhöht sich cellNum um 1. Dieser Schritt ist sehr wichtig.
weitermachen;
}anders{
String cellvalue=""; switch(cell.getCellType()) {//Wenn der aktuelle Zellentyp NUMERIC ist
caseHSSFCell.CELL_TYPE_NUMERIC:caseHSSFCell.CELL_TYPE_FORMULA: {//Bestimmen Sie, ob die aktuelle Zelle das Datum ist
if(HSSFDateUtil.isCellDateFormatted(cell)) {//Wenn es sich um einen Datumstyp handelt, konvertieren Sie es in das Datenformat//Methode 1: Das Datenformat ist wie folgt mit Stunden, Minuten und Sekunden: 2011-10-12 0:00:00 // Zellwert=
cell.getDateCellValue().toLocaleString();//Methode 2: Das Datenformat wie dieses ist ohne Stunden, Minuten und Sekunden: 2011-10-12
Datum date =cell.getDateCellValue();
SimpleDateFormat sdf= new SimpleDateFormat(“yyyy-MM-dd“);
cellvalue=sdf.format(date);
item.setText(cellvalue);
}//Wenn es eine reine Zahl ist
else{//Den Wert der aktuellen Zelle abrufen
cellvalue = String.valueOf((int) cell.getNumericCellValue());
item.setText(cellvalue);
}brechen;
}//Wenn der Typ der aktuellen Zelle STRIN ist
caseHSSFCell.CELL_TYPE_STRING://Ruft die aktuelle Zellenzeichenfolge ab
cellvalue =cell.getRichStringCellValue().getString();
item.setText(cellvalue);break;//Standardzellenwert
Standard:
Zellwert = " ";
item.setText(cellvalue);
}
e.addContent(item);
System.out.println(cellvalue);
}
}
root.addContent(e);
}
}
}catch(Ausnahme e) {
e.printStackTrace();
}endlich{versuchen{
stream.close();
}catch(IOException e1) {
e1.printStackTrace();
}
}returndoc;
}//Legen Sie den Namen des untergeordneten Elements im parallelen Element fest
privater statischer String get(intk) {
String test= „“;switch(k) {case 0:
test= „org_name“;break;case 1:
test= „legal_mobile_phone“;break;Fall 2:
test= „org_address“;break;Fall 3:
test= „cert_type“;break;Fall 4:
test= „Postleitzahl“;break;Fall 5:
test= „reg_sum“;break;Fall 6:
test= „business_scope“;break;Fall 7:
test= „social_credit_code“;break;Fall 8:
test= „reg_type“;break;Fall 9:
test= „legal_person_name“;break;case 10:
test= „cert_number“;break;case 11:
test= „found_time“;break;case 12:
test= „service_status“;break;Fall 13:
test= „staff_sum“;break;Fall 14:
test= „partner_sum“;break;Fall 15:
test= „is_branch_org“;break;default:
} returntest;
}
}
geprüft werden