Leerzeichen werden nicht im XSSFWorksheet-Code erkannt

Ich konvertiere XLSX in CSV und lade data unter Verwendung von Code in die database hoch.

import java.io.*; import java.sql.Connection; import java.sql.SQLException; import java.sql.Statement; import java.util.Iterator; import org.apache.poi.ss.usermodel.Cell; import org.apache.poi.ss.usermodel.Row; import org.apache.poi.xssf.usermodel.XSSFSheet; import org.apache.poi.xssf.usermodel.XSSFWorkbook; public class XLStoCSVConvert { static Connectivity conv; static Connection con = null; static Statement st = null; static String query=null; static void xlsx(File inputFile, File outputFile) { // For storing data into CSV files StringBuffer data = new StringBuffer(); try { FileOutputStream fos = new FileOutputStream(outputFile); // Get the workbook object for XLSX file System.out.println("working......"); XSSFWorkbook wBook = new XSSFWorkbook(new FileInputStream(inputFile)); // Get first sheet from the workbook System.out.println("working......"); XSSFSheet sheet = wBook.getSheetAt(0); Row row; Cell cell; // Iterate through each rows from first sheet Iterator<Row> rowIterator = sheet.iterator(); while (rowIterator.hasNext()) { row = rowIterator.next(); // For each row, iterate through each columns Iterator<Cell> cellIterator = row.cellIterator(); while (cellIterator.hasNext()) { cell = cellIterator.next(); switch (cell.getCellType()) { case Cell.CELL_TYPE_BOOLEAN: data.append(cell.getBooleanCellValue() + ","); break; case Cell.CELL_TYPE_NUMERIC: data.append(cell.getNumericCellValue() + ","); break; case Cell.CELL_TYPE_STRING: data.append(cell.getStringCellValue() + ","); break; case Cell.CELL_TYPE_BLANK: data.append("" + ","); break; default: data.append(cell + ","); } } data.append("\n"); } fos.write(data.toString().getBytes()); fos.close(); conv = new Connectivity(); con = conv.setConnection(); st = con.createStatement(); query = "LOAD DATA LOCAL INFILE \"" + outputFile + "\" INTO TABLE xLSXUpload FIELDS TERMINATED BY ',' IGNORE 1 LINES"; st.executeUpdate(query); } catch (Exception ioe) { ioe.printStackTrace(); } } public static void main(String[] args) { try { //FileOutputStream fin = new FileOutputStream("/home/raptorjd4/Desktop/RaptorTrackingSystem/mani.csv"); } catch(Exception e) { e.printStackTrace(); } File inputFile = new File("/home/raptorjd4/Desktop/XLS files/ToConsult.xlsx"); //writing excel data to csv File outputFile = new File("/home/raptorjd4/Desktop/RaptorTrackingSystem/ToConsult.csv"); xlsx(inputFile, outputFile); } } 

Oben Code, der data in Tabelle hochlädt, aber leere Werte, die nicht durch Code und NULL-Werte erkannt werden, speichert in Tabelle für leere Werte und das datesformat wird immer in 2033-01-02 statt 1990-05-19 gespeichert .

Wo mache ich falsch?

  • Apache POI sieht Spalten in leerer Tabelle?
  • Java - Apache POI HSSF / XSSF - Fehler beim Lesen der Zelle mit dem dataformat XX: XX
  • gute Möglichkeit, einen Excel-Blattwert in Java darzustellen
  • Schreiben Sie Zahlen in Excel-Zellen mit Apache POI
  • java.lang.IllegalArgumentException: Die Arbeitsmappe enthält bereits ein Blatt mit diesem Namen
  • Lesen von Excel-fileen .xlsx über Java
  • Multiline Text in Excel Zellen
  • Excel, das das Zahlenformat zu date ändert, wenn der Monat mit Null beginnt. Ist es ein bizzare Programmerrors?
  • One Solution collect form web for “Leerzeichen werden nicht im XSSFWorksheet-Code erkannt”

    Excel kennt kein Date für eine Zelle. Der Wert wird als Zahl gespeichert und nur durch das Format als date festgelegt.

    Wenn Ihre Zelle den Wert 33012 enthält und Sie ein datesformat yyyy-mm-dd angeben, wird es in Excel als 1990-05-19 . Wenn Sie die data extrahieren, get den numerischen Wert für diese Zelle.

    Sie müssen die numerischen Werte, die als date interpretiert werden sollen, von normalen numerischen Werten unterscheiden. Unten finden Sie einen Ausschnitt als Beispiel.

     import org.apache.poi.ss.usermodel.DateUtil; ... case Cell.CELL_TYPE_NUMERIC: if (DateUtil.isCellDateFormatted(cell)) { // append as String in the format specified in Excel // System.out.println("format: " + cell.getCellStyle().getDataFormatString()); data.append(cell); } else { data.append(cell.getNumericCellValue()); } 
    Spreadsheet (Microsoft Excel) makes working easy.