这里选择Excel文件是业务需要,话不多说
1、引入对Excel处理的相关依赖
org.apache.poi
poi
3.16
org.apache.poi
poi-ooxml
3.16
2、进行swing的相关布局
代码:
package com.mozarta;
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.xssf.usermodel.XSSFSheet;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import javax.swing.;
import javax.swing.border.EmptyBorder;
import java.awt.;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
public class UITest extends JFrame {
private JButton btn;
private JPanel contentPane; //内容面板
private JTextField textField; //文本框
public UITest(){
setTitle("选择文件"); //设置窗体的标题
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); //设置窗体退出时操作
setBounds(100, 100, 800, 400); //设置窗体位置和大小
contentPane=new JPanel(); //创建内容面板
contentPane.setBorder(new EmptyBorder(100,5,5,5)); //设置面板的边框
contentPane.setLayout(new BorderLayout(0,0)); //设置内容面板为边界布局
setContentPane(contentPane); //应用内容面板
JPanel panel1=new JPanel(); //新建面板用于保存文本框
panel1.setBounds(5,100,800,100);
contentPane.add(panel1,BorderLayout.NORTH); //将面板放置在边界布局的北部
textField=new JTextField(); //新建文本框
panel1.add(textField); //将文本框增加到面板中
textField.setPreferredSize(new Dimension (400,40));
final JButton btn=new JButton("选择文件");
btn.setPreferredSize(new Dimension (100,40));
panel1.add(btn);
btn.setBackground(Color.GREEN);
JPanel panel2=new JPanel(); //新建面板用于保存按钮
contentPane.add(panel2, BorderLayout.CENTER); //将面板放置在边界布局的中央
JButton okBtn=new JButton("确定");
okBtn.setPreferredSize(new Dimension(100,40));
panel2.add(okBtn);
setVisible(true);
btn.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
//按钮点击事件
JFileChooser chooser = new JFileChooser(); //设置选择器
chooser.setMultiSelectionEnabled(true); //设为多选
int returnVal = chooser.showOpenDialog(btn); //是否打开文件选择框
System.out.println("returnVal="+returnVal);
if (returnVal == JFileChooser.APPROVE_OPTION) { //如果符合文件类型
String filepath = chooser.getSelectedFile().getAbsolutePath(); //获取绝对路径
System.out.println(filepath);
textField.setText(filepath);
}
}
});
/* 确定点击 */
okBtn.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
String filepath=textField.getText();
if("".equals(filepath)||filepath==null){
JOptionPane.showMessageDialog(getContentPane(), "请先选择文件~",
"警告", JOptionPane.WARNING_MESSAGE);
return;
}
String suffix=filepath.substring(filepath.lastIndexOf(".")+1);
System.out.println(suffix);
if(!(suffix.equals("xlsx")||(suffix.equals("xls")))){
JOptionPane.showMessageDialog(getContentPane(), "请选择Excel文件~",
"警告", JOptionPane.WARNING_MESSAGE);
return;
}
/* 打开文件 */
try {
openFile(filepath);
} catch (Exception e1) {
e1.printStackTrace();
}
}
});
}
/* 打开对应的Excel文件 */
public void openFile(String filepath) throws IOException {
FileInputStream fileInputStream = new FileInputStream(new File(filepath));
XSSFWorkbook workbook = new XSSFWorkbook(fileInputStream);
XSSFSheet sheet = workbook.getSheetAt(0);
System.out.println(sheet.getLastRowNum());
queryRows(workbook,"设计");
}
/* 检索需要信息 */
public java.util.ListqueryRows(XSSFWorkbook workbook, String keys){
Listlist=new ArrayList<>();
XSSFSheet sheet = workbook.getSheetAt(0);
for(int i=2;i<=sheet.getLastRowNum();i++){
System.out.println(sheet.getRow(i).getCell(2).getStringCellValue());
if(sheet.getRow(i).getCell(2).getStringCellValue().contains(keys)){
list.add(sheet.getRow(i));
}
}
return list;
}
public static void main(String[] args) {
new UITest();
}
}
后续对Excel的处理可以用户自行实现,代码只是对选择的是否是Excel文件进行判断,并且根据业务需要都所打开的Excel文件进行检索。