El proyecto debe analizar los documentos de Excel para obtener datos, por lo que encontré información en línea y combiné con mi uso esta vez, y escribí mi experiencia:
1. Las siguientes dependencias son necesarias para el proyecto Maven:
<Spendency> <MoupRoid> org.apache.poi </groupid> <artifactId> poi </artifactid> <versión> 3.10-fininal </versión> </pendency> <pendency> <MoupRupid> org.apache.poi </groupId> <artifactid> poi-ooxml </artifactid> <verserse 3.10-final </version> </versión> </versión>
Vaya directamente a la clase de prueba, con anotaciones completas en la clase:
paquete shindo.java; import java.io.fileInputStream; import java.io.inputstream; import java.util.arrayList; import java.util.list; importar org.apache.poi.hssf.usermodel.hssfcell; import org.apache.poi.hssf.usmfrow; org.apache.poi.hssf.usermodel.hssfworkbook; import org.apache.poi.ss.usermodel.cell; import org.apache.poi.xssf.usermodel.xssfcell; import org.apache.poi.xssf.usermodel.xssfrow; importar; import org.apache.poi.xssf.usermodel.xssfsheet; import org.apache.poi.xssf.usermodel.xssfworkbook; public class ExelUtil {public static void main (string [] string path = "d: //ide//workspace-neon//java//src/refund.xss"; Pruebe {List <List <String> Result = new ExcelUtil (). ReadXLS (ruta); System.out.println (result.size ()); for (int i = 0; i <result.size (); i ++) {list <string> model = result.get (i); System.out.println ("OrderNum:" + Model.get (0) + "-> OrderAmont:" + Model.get (1)); }} catch (Exception e) {E.PrintStackTrace (); }} /** * * @title: readXls * @Description: procesar archivos XLS * @param @param ruta * @param @return * @param @throws Exception Set File * @return List <List <String>> Tipo de retorno * @throws * * No es difícil encontrar su lógica de procesamiento del código: * 1. Primero use InputStream para obtener el Stream de IO de IOS de Excel * 2. Archivo HSSFWorkBook Tipo Objeto, que representa todo el archivo de Excel. * 3. Luce para cada página de este archivo de Excel* 4. Luce para cada fila en cada página* 5. Procese cada celda en cada fila para obtener el valor de esta celda* 6. Agregue el resultado de esta línea a una matriz de lista* 7. Agregue el resultado de cada fila a la última vez* 8. Después de la parsación, un objeto de tipo de tipo <Lista de tipos <String>> se obtiene**/ Lista privada <Lista de listas <String>> StretxLs (String Coath). FileInputStream (ruta); // HSSFWorkBook identifica todo el Excel HSSFWorkBook HSSFWorkBook = nuevo HSSFWorkBook (IS); List <List <String>> result = New ArrayList <List <String> (); int size = hssfworkbook.getNumberOfSheets (); // bucle cada página y procese la página de bucle actual para (int numSheet = 0; numSheet <size; numSheet ++) {// hssfsheet identifica una determinada página hssfsheet hssfsheet = hssfworkbook.getSheetat (numSheet); if (hssfsheet == null) {continuar; } // Procese la página actual y lea cada fila para (int rownum = 1; Rownum <= hssfsheet.getLastrownum (); Rownum ++) {// HSSFROW representa la fila HSSFROW HSSFROW = HSSFSheet.getrow (Rownum); int mincolix = hssfrow.getFirstCellNum (); int maxcolix = hssfrow.getLastCellNum (); List <String> RowList = New ArrayList <String> (); // transversal y cambie las filas para procesar cada elemento celular para (int colix = mincolix; colix <maxcolix; colix ++) {// hssfcell representa la celda hssfcell celular = hssfrow.getcell (colix); if (cell == null) {continuar; } RowList.Add (getStringVal (celda)); } resultado.Add (RowList); }} Resultado de retorno; } / ** * * @title: readXlsx * @Description: procesar archivos xlsx * @param @param ruta * @param @return * @param @throws Exception Setting Archue * @return List <List <String>> Tipo de retorno * @throws * / private List <List <String>> ReadXLSX (string path) Sells excepción {InputStream es = new FileInput sea (list <List <String>> readXlSX (string path). XSSFWorkBook XSSFWorkBook = nuevo XSSFWorkBook (is); List <List <String>> result = New ArrayList <List <String> (); // bucle cada página y procese la página de bucle actual para (xssfsheet xssfsheet: xssfworkbook) {if (xssfsheet == null) {continuar; } // Procese la página actual y lea cada fila para (int ROWNUM = 1; ROWNUM <= XSSFSheet.getLastrownum (); ROWNUM ++) {XSSFROW XSSFROW = XSSFSheet.getrow (ROWNUM); int mincolix = xssfrow.getFirstCellnum (); int maxcolix = xssfrow.getLastCellNum (); List <String> RowList = New ArrayList <String> (); for (int colix = mincolix; colix <maxcolix; colix ++) {xssfcell cell = xssfrow.getcell (colix); if (cell == null) {continuar; } RowList.Add (Cell.ToString ()); } resultado.Add (RowList); }} Resultado de retorno; } // Problemas existentes/** De hecho, a veces los datos que queremos obtener son los datos en Excel, pero al final se encuentra que el resultado no es ideal* Si los datos en su Excel son un número, encontrará que el correspondiente en Java se ha convertido en un método de notación científica. * Entonces, al obtener valores, debe hacer un procesamiento especial para asegurarse de obtener los resultados que desea. El enfoque en línea es formatear datos numéricos para obtener los resultados que desea. * El siguiente es otro método. Antes de esto, echemos un vistazo al método ToString () en POI: * * Este método es el método POI. Desde el código fuente, podemos encontrar que el flujo de procesamiento es: * 1. Obtenga el tipo de celda * 2. Formatee los datos de acuerdo con el tipo y la salida. Esto crea muchas cosas que no estamos buscando*, por lo que hacemos una transformación de este método. * / /*public String toString () {switch (getCellType ()) {case cell_type_blank: return ""; case cell_type_boolean: return getBooleAnCellValue ()? "Verdadero": "falso"; case cell_type_error: return Erroreval.gettext (getErrorCellValue ()); case cell_type_formula: return getCellFormula (); case cell_type_numeric: if (dateUtil.iscellDateFormatted (this)) {dateFormat sdf = new SimpleDateFormat ("dd-mmm-yyyy") return sdf.format (getDateCellValue ()); } return getNumericCellValue () + ""; case cell_type_string: return getRichStringCellValue (). toString (); predeterminado: return "Tipo de celda desconocido:" + getCellType (); }}* / / *** El método para reconstruir el toString predeterminado () de POI es el siguiente* @title: getStringVal* @Description: 1. Para no familiarizar los tipos, o vacía, devolver "" Control String* 2. Si es un número, modifique el tipo de celda en cadena y luego return String Strike Strike Strike Strike Strike Tipo de retorno * @throws */ public static string getStringVal (hssfcell cell) {switch (cell.getCellType ()) {Case Cell.Cell_Type_Boolean: return Cell.getBooleCellValue ()? "Verdadero": "falso"; Case Cell.Cell_Type_Formula: return cell.getCellFormula (); Case Cell.Cell_Type_Numeric: Cell.SetCellType (Cell.Cell_Type_String); return cell.getStringCellValue (); Case Cell.Cell_Type_String: return cell.getStringCellValue (); predeterminado: return ""; }}}Resumir
Lo anterior es todo el contenido de este artículo sobre el uso del paquete POI para leer el código de documento de Excel en Java. Espero que sea útil para todos. Los amigos interesados pueden continuar referiéndose a otros temas relacionados en este sitio. Si hay alguna deficiencia, deje un mensaje para señalarlo. ¡Gracias amigos por su apoyo para este sitio!