java使用poi,第一列根据’属性‘,’长度‘,’大小‘进行降序排序的代码示例
时间: 2023-06-04 12:02:37 浏览: 106
可以使用POI中的Workbook、Sheet、Row和Cell类实现根据列中的值进行排序。以下是示例代码:
```
import java.io.File;
import java.io.FileOutputStream;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;
import java.util.ArrayList;
import org.apache.poi.ss.usermodel.CellType;
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.ss.usermodel.Sheet;
import org.apache.poi.ss.usermodel.Workbook;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import org.apache.poi.ss.usermodel.Cell;
public class PoiSortExample {
public static void main(String[] args) throws Exception {
// 创建工作簿和工作表
Workbook workbook = new XSSFWorkbook();
Sheet sheet = workbook.createSheet("Sheet1");
// 添加数据行
Row row1 = sheet.createRow(0);
row1.createCell(0).setCellValue("属性");
row1.createCell(1).setCellValue("长度");
row1.createCell(2).setCellValue("大小");
Row row2 = sheet.createRow(1);
row2.createCell(0).setCellValue("A");
row2.createCell(1).setCellValue(100);
row2.createCell(2).setCellValue(50);
Row row3 = sheet.createRow(2);
row3.createCell(0).setCellValue("B");
row3.createCell(1).setCellValue(50);
row3.createCell(2).setCellValue(30);
Row row4 = sheet.createRow(3);
row4.createCell(0).setCellValue("C");
row4.createCell(1).setCellValue(80);
row4.createCell(2).setCellValue(40);
// 创建并填充数据列表
List<Row> dataRows = new ArrayList<>();
for(int i = 1; i <= 3; i++) {
dataRows.add(sheet.getRow(i));
}
// 根据第一列的值进行排序
Collections.sort(dataRows, new Comparator<Row>() {
@Override
public int compare(Row row1, Row row2) {
String value1 = row1.getCell(0).getStringCellValue();
String value2 = row2.getCell(0).getStringCellValue();
return value2.compareTo(value1);
}
});
// 输出排序结果
for(Row row : dataRows) {
System.out.println(row.getCell(0).getStringCellValue());
}
// 将排序结果写回Excel文件
int rowNum = 1;
for(Row row : dataRows) {
for(int i = 0; i < 3; i++) {
Cell cell = row.getCell(i, Row.MissingCellPolicy.CREATE_NULL_AS_BLANK);
cell.setCellType(CellType.STRING);
sheet.getRow(rowNum).getCell(i).setCellValue(cell.getStringCellValue());
}
rowNum++;
}
// 将工作簿写入文件
File outputFile = new File("output.xlsx");
FileOutputStream outputStream = new FileOutputStream(outputFile);
workbook.write(outputStream);
outputStream.close();
workbook.close();
}
}
```
在此示例代码中,我们首先创建了一个名为“Sheet1”的工作表,并在其中添加了数据行。然后,我们创建了一个数据列表,其中包含了所有数据行,并根据第一列的值进行排序。最后,我们将排序后的数据写回Excel文件。