由于缺少数据文件,无法提供完整的程序代码。以下是一个伪代码示例:

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

import java.io.File; import java.io.IOException; import java.util.*;

public class DataSorter { public static void main(String[] args) throws IOException { // 读取Excel文件 Workbook workbook = WorkbookFactory.create(new File("datas.xlsx")); Sheet sheet = workbook.getSheetAt(0); // 读取表头 Row headerRow = sheet.getRow(0); // 获取列名 List columnNames = new ArrayList<>(); for (Cell cell : headerRow) { columnNames.add(cell.getStringCellValue()); } // 读取数据 List<Map<String, Object>> dataList = new ArrayList<>(); for (int i = 1; i <= sheet.getLastRowNum(); i++) { Row row = sheet.getRow(i); Map<String, Object> rowMap = new HashMap<>(); for (int j = 0; j < columnNames.size(); j++) { Cell cell = row.getCell(j); Object cellValue = getCellValue(cell); rowMap.put(columnNames.get(j), cellValue); } dataList.add(rowMap); } // 对数据进行排序 Collections.sort(dataList, new Comparator<Map<String, Object>>() { @Override public int compare(Map<String, Object> o1, Map<String, Object> o2) { int result = ((String) o2.get("first_name")).compareTo((String) o1.get("first_name")); if (result == 0) { result = ((String) o2.get("last_name")).compareTo((String) o1.get("last_name")); } return result; } }); // 输出结果 for (Map<String, Object> rowMap : dataList) { StringBuilder sb = new StringBuilder(); sb.append(rowMap.get("first_name")).append(" ").append(rowMap.get("last_name")).append(";"); for (String columnName : columnNames) { if (!columnName.equals("first_name") && !columnName.equals("last_name")) { sb.append(rowMap.get(columnName)).append(";"); } } System.out.println(sb.toString()); } }

private static Object getCellValue(Cell cell) {
    if (cell == null) {
        return null;
    }
    switch (cell.getCellTypeEnum()) {
        case STRING:
            return cell.getStringCellValue();
        case NUMERIC:
            if (DateUtil.isCellDateFormatted(cell)) {
                return cell.getDateCellValue();
            } else {
                return cell.getNumericCellValue();
            }
        case BOOLEAN:
            return cell.getBooleanCellValue();
        case FORMULA:
            return cell.getCellFormula();
        default:
            return null;
    }
}

}


编译并打包程序为jar文件,然后在命令行中运行:

`java -jar DataSorter.jar`

程序将读取指定的Excel文件,对数据进行排序,并输出每一行的结果
编写一个Java程序打包成jar文件并运行得到结果在程序中首先读取给定的表格文件datasxlsx的内容表格的第一行为标题处理时需要排除然后对读取到的数据进行二次排序要求先对first_name字段降序排列再对last_name字段也进行降序排列最后MapReduce输出的每一行结果中first_name和last_name用空格分隔其他字段用英文分号分隔。

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

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