编写一段代码使用EasyExcel库解析电子表格,并将表格内容输出展示到一个JTable组件中
时间: 2024-05-07 22:24:02 浏览: 83
读取Excel数据到JTable
好的,以下是使用EasyExcel库解析电子表格并将表格内容输出展示到JTable组件中的代码示例:
```java
import com.alibaba.excel.ExcelReader;
import com.alibaba.excel.context.AnalysisContext;
import com.alibaba.excel.event.AnalysisEventListener;
import com.alibaba.excel.metadata.Sheet;
import com.alibaba.excel.support.ExcelTypeEnum;
import com.alibaba.excel.util.IoUtils;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.serializer.SerializerFeature;
import lombok.Cleanup;
import javax.swing.*;
import javax.swing.table.DefaultTableModel;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.util.ArrayList;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
public class ExcelParser {
public static void parseExcelToJTable(String filePath, JTable table) throws IOException {
// 初始化表格数据
DefaultTableModel model = new DefaultTableModel();
table.setModel(model);
// 读取Excel文件
@Cleanup InputStream inputStream = new FileInputStream(filePath);
// 解析Excel数据并填充表格
ExcelReader excelReader = new ExcelReader(inputStream, ExcelTypeEnum.XLSX, null, new AnalysisEventListener<Map<Integer, String>>() {
List<String> headList = new ArrayList<>(); // 表头信息
@Override
public void invokeHeadMap(Map<Integer, String> headMap, AnalysisContext context) {
headList.addAll(headMap.values()); // 获取表头信息
model.setColumnIdentifiers(headList.toArray()); // 设置表格列名
}
@Override
public void invoke(Map<Integer, String> row, AnalysisContext context) {
Map<String, String> dataMap = new LinkedHashMap<>();
for (int i = 0; i < headList.size(); i++) {
dataMap.put(headList.get(i), row.get(i)); // 获取单行数据
}
model.addRow(dataMap.values().toArray()); // 将单行数据添加到表格中
}
@Override
public void doAfterAllAnalysed(AnalysisContext context) {
IoUtils.closeQuietly(inputStream);
}
});
// 解析指定Sheet页
Sheet sheet = new Sheet(1, 1);
sheet.setSheetName("Sheet1");
excelReader.read(sheet);
}
}
```
请注意,此代码示例仅用于参考,请根据具体需求进行修改和优化。
阅读全文