Lire le file Excel en utilisant poi et le déplacer vers un tableau bidimensionnel

J'utilise POI pour lire le file Excel et le convertir en un tableau bidimensionnel. Voici la section de code:

import java.io.FileInputStream; import org.apache.poi.ss.usermodel.CellValue; import org.apache.poi.xssf.usermodel.XSSFCell; import org.apache.poi.xssf.usermodel.XSSFRow; import org.apache.poi.xssf.usermodel.XSSFSheet; import org.apache.poi.xssf.usermodel.XSSFWorkbook; public class XlsxRead_2 { public XlsxRead_2(){ getvalue_1(); } public static void getvalue_1(){ XSSFRow row; XSSFCell cell; Ssortingng [][] value =null; double[][] nums =null; try { FileInputStream inputStream = new FileInputStream("TEST.xlsx"); XSSFWorkbook workbook = new XSSFWorkbook(inputStream); //get sheet number int sheetCn = workbook.getNumberOfSheets(); for(int cn = 0; cn < sheetCn; cn++){ //get 0th sheet data XSSFSheet sheet = workbook.getSheetAt(cn); //get number of rows from sheet int rows = sheet.getPhysicalNumberOfRows(); //get number of cell from row int cells = sheet.getRow(cn).getPhysicalNumberOfCells(); for (int r = 0; r < rows; r++) { row = sheet.getRow(r); // bring row if (row != null) { for (int c = 0; c < cells; c++) { cell = row.getCell(c); value = new Ssortingng[rows][cells]; nums= new double [rows][cells]; if (cell != null) { switch (cell.getCellType()) { case XSSFCell.CELL_TYPE_FORMULA: value [r][c]= cell.getCellFormula(); break; case XSSFCell.CELL_TYPE_NUMERIC: value [r][c]= "" + cell.getNumericCellValue(); break; case XSSFCell.CELL_TYPE_STRING: value [r][c]= "" + cell.getSsortingngCellValue(); break; case XSSFCell.CELL_TYPE_BLANK: value [r][c]= "[BLANK]"; break; case XSSFCell.CELL_TYPE_ERROR: value [r][c]= "" + cell.getErrorCellValue(); break; default: } System.out.print(value); } else { System.out.print("[null]\t"); } } // for(c) System.out.print("\n"); } } // for(r) } } catch (Exception e) { e.printStackTrace(); } } public class Starter { public static void main(Ssortingng[] args) { XlsxRead_2 gv=new XlsxRead_2(); } } 

Cependant, cela n'a pas fonctionné correctement. Attaché est un résultat incorrect dans JAVA. Quand je l'ai travaillé sans utiliser le tableau, cela fonctionne correctement. Toute suggestion est appréciée.

 Result in java: [[Ljava.lang.Ssortingng;@167fdd33[[Ljava.lang.Ssortingng;@1e965684 [[Ljava.lang.Ssortingng;@4d95d2a2[[Ljava.lang.Ssortingng;@53f65459 [[Ljava.lang.Ssortingng;@3b088d51[[Ljava.lang.Ssortingng;@1786dec2 [[Ljava.lang.Ssortingng;@74650e52[[Ljava.lang.Ssortingng;@15d0c81b [[Ljava.lang.Ssortingng;@6acdbdf5[[Ljava.lang.Ssortingng;@4b1c1ea0 [[Ljava.lang.Ssortingng;@3712b94[[Ljava.lang.Ssortingng;@2833cc44 [[Ljava.lang.Ssortingng;@33f88ab[[Ljava.lang.Ssortingng;@27a8c74e 

Vous devez créer une masortingce après la première boucle. Et vous devriez également créer un tableau de valeurs pour chaque feuille. Et un sharepoint plus, vous devez imprimer la valeur [r] [c] pas la valeur j'espère que cela vous aide.

 public class XlsxRead_2 { public static void main(Ssortingng[] args) { XlsxRead_2 xread2 = new XlsxRead_2(); } public XlsxRead_2() { getvalue_1(); } public static void getvalue_1() { XSSFRow row; XSSFCell cell; Ssortingng[][] value = null; double[][] nums = null; try { FileInputStream inputStream = new FileInputStream("TEST.xlsx"); XSSFWorkbook workbook = new XSSFWorkbook(inputStream); // get sheet number int sheetCn = workbook.getNumberOfSheets(); for (int cn = 0; cn < sheetCn; cn++) { // get 0th sheet data XSSFSheet sheet = workbook.getSheetAt(cn); // get number of rows from sheet int rows = sheet.getPhysicalNumberOfRows(); // get number of cell from row int cells = sheet.getRow(cn).getPhysicalNumberOfCells(); value = new Ssortingng[rows][cells]; for (int r = 0; r < rows; r++) { row = sheet.getRow(r); // bring row if (row != null) { for (int c = 0; c < cells; c++) { cell = row.getCell(c); nums = new double[rows][cells]; if (cell != null) { switch (cell.getCellType()) { case XSSFCell.CELL_TYPE_FORMULA: value[r][c] = cell.getCellFormula(); break; case XSSFCell.CELL_TYPE_NUMERIC: value[r][c] = "" + cell.getNumericCellValue(); break; case XSSFCell.CELL_TYPE_STRING: value[r][c] = "" + cell.getSsortingngCellValue(); break; case XSSFCell.CELL_TYPE_BLANK: value[r][c] = "[BLANK]"; break; case XSSFCell.CELL_TYPE_ERROR: value[r][c] = ""+cell.getErrorCellValue(); break; default: } System.out.print(value[r][c]); } else { System.out.print("[null]\t"); } } // for(c) System.out.print("\n"); } } // for(r) } } catch (Exception e) { e.printStackTrace(); } } }