Java lee los datos en la fila y columna especificadas de Excel (método poi)

I. Introducción

POI en JAVA es un paquete jar proporcionado por Apache para admitir el procesamiento de Excel, Word, PPT y otros archivos. Es un conjunto de API de Java multiplataforma gratuitas y de código abierto escritas en Java; API de Java para programas Java para acceder a documentos de Microsoft Office, funciones de lectura y escritura.

2. Antecedentes de requisitos comerciales

El proyecto necesita leer el contenido de algunas filas y columnas en Excel (se puede extender para leer el contenido de un Excel, y la cantidad de filas y columnas en este Excel cambia dinámicamente). Luego, convierta el contenido leído en datos en formato Json.
inserte la descripción de la imagen aquí
Este es el contenido del archivo de Excel. El contenido de este archivo debe leerse y convertirse en datos en formato json: (Aquí hay solo una lista de algunos datos, y el formato Json se ha reflejado)

'p10':
	'3': 0.75
	'4': 0.428
	'6': 0.289
	'8': 0.22
	'10': 0.191
	'12': 0.158
	'14': 0.14
	'16': 0.125
	'18': 0.121
	'20': 0.113
'p20':
	'3': 0.652
	'4': 0.412
	'6': 0.267
	'8': 0.179
	'10': 0.141
	'12': 0.138
	'14': 0.116
	'16': 0.109
	'18': 0.12
	'20': 0.122

3. Soluciones

  1. Trate cada celda como un objeto, que contiene la abscisa, la ordenada y el valor de datos en la celda.
  2. Encuentre la fila del encabezado (es decir, la segunda fila, porque los datos de la primera fila no se usan, por lo que no es necesario leerlos, la demanda del autor es así).
  3. Busque la columna de encabezado (es decir, la primera columna).
  4. Empalme los datos según el formato requerido (el formato requerido es, por ejemplo, json u otros formatos para el empalme).

4. Plan de implementación

1. pompón de importación

<dependency>
            <groupId>org.apache.poi</groupId>
            <artifactId>poi-ooxml</artifactId>
            <version>4.1.2</version>
        </dependency>

        <dependency>
            <groupId>org.apache.poi</groupId>
            <artifactId>poi-ooxml-schemas</artifactId>
            <version>4.1.2</version>
        </dependency>

        <dependency>
            <groupId>org.apache.poi</groupId>
            <artifactId>poi</artifactId>
            <version>4.1.2</version>
        </dependency>

2. Escriba código de acuerdo con las soluciones 2, 3 y 4

  		//获取文件路径
        String filePath = "D:\\TI.xls";
        File file = new File(filePath);
        //获取文件后缀
        String finishFile = filePath.substring(turbulenceCurveFile.lastIndexOf(".") + 1);
        InputStream inputStream = new FileInputStream(file);
        //这里需要注意XSSFWorkbook能够处理xlsx的文件
        //而HSSFWorkbook能够处理xls的文件,不然会报错,这样写是为了更好的兼容处理两种格式
        Workbook workbook;
        if ("xlsx".equals(finishFile)) {
    
    
            workbook = new XSSFWorkbook(inputStream);
        } else {
    
    
            workbook = new HSSFWorkbook(inputStream);
        }
        //这里是读取第几个sheet
        Sheet sheet = workbook.getSheetAt(0);
        //这里是读取总行数
        int rows = sheet.getPhysicalNumberOfRows();
        List<CoordinateVO> allList = new ArrayList<>();
        //1.找到所有的元素对象,然后用list存放
        for (int i = 1; i < rows; i++) {
    
    
            Row row = sheet.getRow(i);//获取每一行
            int columns = 0;
            if (1 == i) {
    
    
                //获取每一行的最后一列的列号,即总列数,这里需要注意一下,
                //这种方法读取第一行的列数的时候会多读取一列,所以这里要减1
                columns = row.getLastCellNum() - 1;
            } else {
    
    
                columns = row.getLastCellNum();
            }
            for (int j = 0; j < columns; j++) {
    
    
                //获取每个单元格
                Cell cell = row.getCell(j);
                //设置单元格类型
                cell.setCellType(CellType.STRING);
                //获取单元格数据
                String cellValue = cell.getStringCellValue();
                CoordinateVO coordinateVO = new CoordinateVO();
                coordinateVO.setCoordinateX(i);
                coordinateVO.setCoordinateY(j);
                coordinateVO.setDataValue(cellValue);
                allList.add(coordinateVO);
            }
        }
        //至此,所有的数据都已经获取完了,并且都存放在allList这个集合当中去了
        //接下来就是自己去拼接数据格式了,相信各位大佬这里应该没有问题,以下代码就不贴了

3. Agregue la clase de entidad en el código

@Data
@AllArgsConstructor
@NoArgsConstructor
public class CoordinateVO {
    
    
    /**
     * excel中的横坐标
     */
    private Integer coordinateX;
    /**
     * excel中的纵坐标
     */
    private Integer coordinateY;
    /**
     * excel中的每个单元格的数据值
     */
    private String dataValue;
}

4. Explicación de los puntos clave del código

Operation Excel incluye objetos Libro de trabajo (libro de trabajo), Hoja (hoja de trabajo), Celda (celda). Un Excel corresponde a un objeto Libro de trabajo, un Libro de trabajo puede tener varios objetos Hoja y un objeto Hoja puede tener varios objetos Celda.

Explicación: este artículo es para operar excel a través de poi. Si desea operar excel a través de jxl, puede hacer clic en el enlace: java usa jxl para leer datos en execl

Comentarios: Este artículo es el trabajo original del autor. Si hay alguna inexactitud, espero que pueda señalar la inadecuación. El autor debe ser enseñado con una mente abierta. No rocíes si no te gusta. (Indique la fuente de la reimpresión) ¡Gracias!

Supongo que te gusta

Origin blog.csdn.net/qq_41774102/article/details/127445159
Recomendado
Clasificación