Java lit les données dans la ligne et la colonne spécifiées d'Excel (méthode poi)

Introduction

POI en JAVA est un package jar fourni par Apache pour prendre en charge le traitement des fichiers Excel, Word, PPT et autres. Il s'agit d'un ensemble d'API Java multiplateformes gratuites et open source écrites en Java ; API Java pour les programmes Java permettant d'accéder aux documents Microsoft Office, aux fonctions de lecture et d'écriture.

2. Contexte des exigences commerciales

Le projet doit lire le contenu de certaines lignes et colonnes dans Excel (il peut être étendu pour lire le contenu d'un Excel, et le nombre de lignes et de colonnes dans cet Excel est modifié dynamiquement). Convertissez ensuite le contenu lu en données au format Json.
insérez la description de l'image ici
Voici le contenu du fichier Excel. Le contenu de ce fichier doit être lu et converti en données au format json : (Voici juste une liste de quelques données, et le format Json a été reflété)

'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. Solutions

  1. Traitez chaque cellule comme un objet, qui contient l'abscisse, l'ordonnée et la valeur de données dans la cellule.
  2. Trouvez la ligne d'en-tête (c'est-à-dire la deuxième ligne, car les données de la première ligne ne sont pas utilisées, il n'est donc pas nécessaire de la lire, la demande de l'auteur est la suivante).
  3. Recherchez la colonne d'en-tête (c'est-à-dire la première colonne).
  4. Assemblez les données selon le format requis (le format requis est, par exemple, json ou d'autres formats pour l'épissage).

4. Plan de mise en œuvre

1. Importer des pompons

<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. Écrivez le code selon les solutions 2, 3 et 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. Ajouter la classe d'entité dans le code

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

4. Explication des points clés du code

L'opération Excel comprend des objets Workbook (classeur), Sheet (feuille de calcul), Cell (cellule). Un Excel correspond à un objet Workbook, un Workbook peut avoir plusieurs objets Sheet et un objet Sheet peut avoir plusieurs objets Cell.

Explication : Cet article concerne l'utilisation d'Excel via poi. Si vous souhaitez utiliser Excel via jxl, vous pouvez cliquer sur le lien : java utilise jxl pour lire les données dans execl

Remarques : Cet article est l'œuvre originale de l'auteur. S'il y a une inexactitude, j'espère que vous pourrez signaler l'inadéquation. L'auteur doit être enseigné avec un esprit ouvert. Ne vaporisez pas si vous ne l'aimez pas. (Veuillez indiquer la source pour la réimpression) Merci !

Je suppose que tu aimes

Origine blog.csdn.net/qq_41774102/article/details/127445159
conseillé
Classement