POI exporte des tableaux complexes (fournit des idées)

Plusieurs concepts à comprendre avant d'exporter des tableaux

ps:理解了原理可以自由发挥写出自己想要的表格
  1. Classeur :
    HSSFWorkbook : Il permet de faire fonctionner la version antérieure à Excel 2003 (y compris 2003
    ) . L'extension est .version, l'extension est .

    // 新建一个工作蒲
    HSSFWorkbook workbook = new HSSFWorkbook();
    
  2. Feuille HSSF : formulaire

    // 创建一个表格
    HSSFSheet sheet = workbook.createSheet("订单信息");
    

    Insérer la description de l'image ici

  3. Ligne HSSFR : OK

    // rowIndex是行号,第几行,从0开始
    // 创建行
    HSSFRow row = sheet.createRow(rowIndex);
    // 获取行
    HSSFRow currentRow = sheet.getRow(rowIndex);
    
  4. HSSFCell : colonne

    // 创建一列,cellIndex是列号,从0开始
    // 通过行currentRow和cell就能定位到一个单元格,写入数据即可
    HSSFCell cell = currentRow.createCell(cellIndex);
    
  5. HSSFFont : police

  6. HSSFDataFormat : le format de date de la cellule

  7. HSSFHeader : L'en-tête de la feuille

  8. HSSFFooter : pied de page de la feuille

  9. HSSFCellStyle : style de cellule

  10. HSSFDateUtil : date

Exemple de code

package com.example.testdemo;

import android.os.Environment;
import android.util.Log;

import org.apache.poi.hssf.usermodel.HSSFCell;
import org.apache.poi.hssf.usermodel.HSSFRow;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;

import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;

/**
 * @Classname com.example.testdemo RecordExport
 * @Description 测试记录表格导出
 * @Date 2023/8/30 15:11
 * @Created by 15267
 */
public class RecordExcelExport {
    
    

    public static List<BatteryParamVO> list = new ArrayList<>();
    public static List<String> snList = new ArrayList<>();

    private static final String[] FIELD_NAMES = new String[]{
    
    "sn", "relativeCharge", "absoluteCharge", "health",
            "voltage", "remainCapacity", "operationStatus", "temperature", "date"};

    public static void export() {
    
    
        String fileName = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS) + "/Q729_Battery_Test_Record.xls";
        Log.i("", " fileName = " + fileName);
        File file = new File(fileName);
        HSSFWorkbook workbook = new HSSFWorkbook();
        try {
    
    
            BufferedOutputStream outputStream = new BufferedOutputStream(new FileOutputStream(file));
            HSSFSheet sheet = workbook.createSheet("测试结果");

            // 创建表头
            setHeader(sheet, workbook);

            // 创建行
            for (int i = 0; i < list.size(); i++) {
    
    
                HSSFRow row = sheet.createRow(i + 1);
                // 数据实体类
                BatteryParamVO batteryParamVO = list.get(i);
                // 创建列
                row.createCell(0).setCellValue(batteryParamVO.getSn());
                row.createCell(1).setCellValue(batteryParamVO.getRelativeCharge());
                row.createCell(2).setCellValue(batteryParamVO.getAbsoluteCharge());
                row.createCell(3).setCellValue(batteryParamVO.getHealth());
                row.createCell(4).setCellValue(batteryParamVO.getVoltage());
                row.createCell(5).setCellValue(batteryParamVO.getRemainCapacity());
                row.createCell(6).setCellValue(batteryParamVO.getOperationStatus() ? "正常" : "异常");
                row.createCell(7).setCellValue(batteryParamVO.getTemperature());
                row.createCell(8).setCellValue(DateTimeUtil.formatDate(batteryParamVO.getDate()));
            }

            for (int i = 0; i < 9; i++) {
    
    
                sheet.setColumnWidth(i, 20 * 256);
            }

            // 写入文件
            workbook.write(outputStream);
            workbook.close();
            outputStream.flush();
            outputStream.close();
        } catch (FileNotFoundException e) {
    
    
            e.printStackTrace();
        } catch (IOException e) {
    
    
            e.printStackTrace();
        }

    }


    public static void setHeader(HSSFSheet sheet, HSSFWorkbook workbook) {
    
    
        HSSFRow row = sheet.createRow(0);
        for (int i = 0; i < FIELD_NAMES.length; i++) {
    
    
            HSSFCell cell = row.createCell(i);
            cell.setCellValue(FIELD_NAMES[i]);
        }
    }



}

Guess you like

Origin blog.csdn.net/qq_42071369/article/details/121931180