java中通过excle导入数据,可预览,勾选列表可选择导入
时间: 2025-06-23 15:26:44 浏览: 7
### Java 实现 Excel 数据导入功能
为了满足需求,在Java项目中实现Excel数据导入功能,可以采用Apache POI库来处理Excel文件。此过程涉及读取Excel文件的内容并将其展示给用户以便于预览和选择性导入。
#### 使用 Apache POI 库解析 Excel 文件
通过引入依赖项`org.apache.poi:poi-ooxml`版本为5.2.3[^1],能够方便地操作`.xlsx`格式的Excel文档:
```xml
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi-ooxml</artifactId>
<version>5.2.3</version>
</dependency>
```
接着定义一个方法用于加载指定路径下的Excel工作簿对象,并遍历其中的工作表获取单元格值形成二维数组表示表格结构化数据供后续逻辑调用显示或进一步加工处理。
```java
import org.apache.poi.ss.usermodel.*;
import java.io.FileInputStream;
import java.util.ArrayList;
import java.util.Iterator;
public class ExcelReader {
public static ArrayList<ArrayList<String>> readExcel(String filePath) throws Exception {
FileInputStream fileInputStream = new FileInputStream(filePath);
Workbook workbook = WorkbookFactory.create(fileInputStream);
Sheet sheet = workbook.getSheetAt(0); // 获取第一个sheet页
Iterator<Row> rowIterator = sheet.iterator();
ArrayList<ArrayList<String>> data = new ArrayList<>();
while (rowIterator.hasNext()) {
Row row = rowIterator.next();
Iterator<Cell> cellIterator = row.cellIterator();
ArrayList<String> rowData = new ArrayList<>();
while (cellIterator.hasNext()) {
Cell cell = cellIterator.next();
switch (cell.getCellType()){
case STRING:
rowData.add(cell.getStringCellValue());
break;
case NUMERIC:
rowData.add(Double.toString(cell.getNumericCellValue()));
break;
default:
rowData.add("");
}
}
data.add(rowData);
}
return data;
}
}
```
上述代码实现了基本的功能框架——即从磁盘上的特定位置打开Excel文件并将每行记录封装成字符串列表再集合起来返回给上层应用界面做下一步交互设计之用途。
#### 构建图形用户接口支持数据预览与勾选选项
对于前端部分,则推荐利用Swing组件构建简易GUI窗口呈现待导入的数据集以及提供多选框让用户决定哪些列应该被实际写入目标存储系统内。这里仅给出概念性的伪代码片段示意如何组合先前准备好的业务函数完成整个流程控制:
```java
JFrame frame = new JFrame("Excel Data Importer");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setSize(800, 600);
// 创建表格模型绑定至 JTable 组件
DefaultTableModel tableModel = new DefaultTableModel(columnNames, 0);
JTable dataTable = new JTable(tableModel);
try{
List<List<String>> excelData = ExcelReader.readExcel("/path/to/excel/file.xlsx");
for(List<String> record : excelData){
Vector<Object> vectorRecord = new Vector<>(record);
tableModel.addRow(vectorRecord);
}
}catch(Exception e){
JOptionPane.showMessageDialog(null,"Error reading the Excel file.");
}
// 添加复选按钮允许用户挑选要保存下来的字段名
for(int i=0;i<tableModel.getColumnCount();i++){
String columnName = tableModel.getColumnName(i);
JCheckBox checkBox = new JCheckBox(columnName,true);
panelForCheckboxes.add(checkBox);
}
// 用户点击确认后执行真正的入库动作...
buttonConfirm.addActionListener(e -> {
Set<Integer> selectedColumnsIndices = getSelectedColumnIndexesFromUI(panelForCheckboxes);
try{
saveToDatabase(dataTable.getModel(),selectedColumnsIndices);
JOptionPane.showMessageDialog(frame,"Import completed successfully!");
}catch(SQLException ex){
JOptionPane.showMessageDialog(frame,"Failed to import into database.");
}
});
frame.setVisible(true);
```
这段程序展示了怎样创建一个简单的桌面应用程序,它可以从本地计算机选取一份电子表格文件,提取其内部的信息填充到界面上的一张动态调整大小的网格里;与此同时附带一系列关联各属性名称的小方块让访客自行判断是否采纳相应条目参与最终提交事务之中去。
阅读全文
相关推荐
















