package org1;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;

import org.apache.poi.ss.usermodel.*;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;

public class Data_Recovery {
    public static void main(String[] args) throws IOException {
        // 创建文件输入流
        FileInputStream inputStream = new FileInputStream('input.xlsx');

        // 创建工作簿对象
        Workbook workbook = new XSSFWorkbook(inputStream);

        // 获取第一个工作表
        Sheet sheet = workbook.getSheetAt(0);

        // 将Excel表格数据转换为二维数组
        double[][] data = new double[sheet.getLastRowNum()+1][sheet.getRow(0).getLastCellNum()];
        for (int i = 0; i <= sheet.getLastRowNum(); i++) {
            Row row = sheet.getRow(i);
            for (int j = 0; j < row.getLastCellNum(); j++) {
                Cell cell = row.getCell(j);
                if (cell.getCellType() == CellType.NUMERIC) {
                    data[i][j] = cell.getNumericCellValue();
                } else {
                    data[i][j] = Double.NaN;
                }
            }
        }

        // 创建KNNAlgorithm对象
        KNNAlgorithm knn = new KNNAlgorithm();

        // 调用KNNAlgorithm的方法进行数据补全处理
        double[][] newData = knn.fillMissingData(data);

        // 将补全后的数据写回Excel表格中
        for (int i = 0; i <= sheet.getLastRowNum(); i++) {
            Row row = sheet.getRow(i);
            for (int j = 0; j < row.getLastCellNum(); j++) {
                Cell cell = row.getCell(j);
                if (cell.getCellType() == CellType.NUMERIC && Double.isNaN(data[i][j])) {
                    cell.setCellValue(newData[i][j]);
                }
            }
        }

        // 保存Excel文件
        FileOutputStream outputStream = new FileOutputStream('input.xlsx');
        workbook.write(outputStream);

        // 关闭工作簿和文件输入流、文件输出流
        workbook.close();
        inputStream.close();
        outputStream.close();
    }
}
使用KNN算法进行Excel数据补全的Java实现

原文地址: https://www.cveoy.top/t/topic/f2g4 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录