用Java写一个读取excel表的数据,进行数据的统计分类,然后保存到excel
时间: 2024-03-14 12:47:57 浏览: 90
好的,以下是一个用Java读取Excel表格数据,进行统计分类,并保存到Excel表格的示例代码:
```java
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Map;
import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.xssf.usermodel.XSSFCell;
import org.apache.poi.xssf.usermodel.XSSFRow;
import org.apache.poi.xssf.usermodel.XSSFSheet;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
public class ExcelDataProcessor {
public static void main(String[] args) throws IOException {
// 读取 Excel 文件
FileInputStream inputStream = new FileInputStream(new File("input.xlsx"));
XSSFWorkbook workbook = new XSSFWorkbook(inputStream);
XSSFSheet sheet = workbook.getSheetAt(0);
// 统计分类数据
Map<String, Integer> dataMap = new HashMap<String, Integer>();
for (int i = sheet.getFirstRowNum(); i <= sheet.getLastRowNum(); i++) {
XSSFRow row = sheet.getRow(i);
XSSFCell cell = row.getCell(0);
String category = cell.getStringCellValue();
if (!dataMap.containsKey(category)) {
dataMap.put(category, 1);
} else {
int count = dataMap.get(category) + 1;
dataMap.put(category, count);
}
}
// 将统计结果写入 Excel 文件
ArrayList<String> categories = new ArrayList<String>(dataMap.keySet());
XSSFWorkbook outputWorkbook = new XSSFWorkbook();
XSSFSheet outputSheet = outputWorkbook.createSheet();
int rowIndex = 0;
for (String category : categories) {
Row row = outputSheet.createRow(rowIndex++);
Cell cell1 = row.createCell(0);
cell1.setCellValue(category);
Cell cell2 = row.createCell(1);
cell2.setCellValue(dataMap.get(category));
}
FileOutputStream outputStream = new FileOutputStream(new File("output.xlsx"));
outputWorkbook.write(outputStream);
outputStream.close();
System.out.println("Data processing completed.");
}
}
```
这个示例代码使用了 Apache POI 库来读取 Excel 文件和写入 Excel 文件。首先,程序会读取输入文件 `input.xlsx` 中的数据,并统计每个分类数据的数量。然后,根据统计结果,程序会创建一个新的 Excel 文件 `output.xlsx` 并将统计结果写入其中。在这个示例代码中,我们假设输入文件中的数据只有一个工作表,并且数据从第一行开始,第一列为分类数据。如果需要处理多个工作表或者数据从不同位置开始,需要进行相应的修改。
阅读全文