java swing 打开文件_java swing实现打开Excel文件并进行处理

这里选择Excel文件是业务需要,话不多说

1、引入对Excel处理的相关依赖

org.apache.poi

poi

3.16

org.apache.poi

poi-ooxml

3.16

2、进行swing的相关布局

7df950c909a091616c7b9bb723d61868.png

代码:

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文件进行检索。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/346741.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

java的对象对象映射_Java对象到对象映射器

java的对象对象映射我在该项目上使用了Dozer一段时间。 但是&#xff0c;最近我遇到了一个非常有趣的错误&#xff0c;这促使我环顾四周&#xff0c;并尝试使用其他“对象到对象”映射器。 这是我找到的工具列表&#xff1a; 推土机&#xff1a;推土机是Java Bean到Java Bea…

java parallelstream_关于Java8 parallelStream并发安全的深入讲解

背景Java8的stream接口极大地减少了for循环写法的复杂性&#xff0c;stream提供了map/reduce/collect等一系列聚合接口&#xff0c;还支持并发操作&#xff1a;parallelStream。在爬虫开发过程中&#xff0c;经常会遇到遍历一个很大的集合做重复的操作&#xff0c;这时候如果使…

使用Google Cloud Storage托管您的Maven工件

如果您使用Google Cloud并将Java用于项目&#xff0c;那么Google Cloud Storage是托管团队工件的理想场所。 它很容易设置&#xff0c;而且很便宜。 如果您对它们的功能不特别感兴趣&#xff0c;那么它比设置现有存储库选项&#xff08;jfrog&#xff0c;nexus&#xff0c;arc…

java+map对象判断空值_java判断map中是否存在指定对象

Map判断是否包含指定的value使用containsValue方法。(推荐&#xff1a;java视频教程)定义containsValue(Object value) 如果此映射将一个或多个键映射到指定值&#xff0c;则返回 true示例&#xff1a;/**** Map集合判断是否包含value**/public class MapDemo{public static vo…

excel查重复_毕业季 | 如何降低论文的查重率

毕业季吾日三省吾身实验做完了吗&#xff1f;论文写完了吗&#xff1f;查重能通过吗&#xff1f;学术圈的前辈告诉我们&#xff0c;只有站在巨人的肩膀上才能看得更远。在撰写一篇论文时&#xff0c;为保证质量和可靠性&#xff0c;难免需要引用前人的成果&#xff0c;这也反映…

Java,JavaFX的流畅设计风格进度栏

按照承诺&#xff0c;刚刚发布的Java JavaFX主题JMetro 4.6版为进度栏带来了新样式。 进度栏有两种可能的状态&#xff1a;确定和不确定&#xff0c;新的JMetro版本具有这两种状态。 在本文中&#xff0c;我还将详细介绍一些我在JMetro中遵守的API设计原则。 JMetro API设计原…

安卓最新系统_成纺移动校园(移动办公系统)V3.2.1 安卓最新版

成纺移动校园(移动办公系统)是额一个非常实用的办公工具。您可以使用该软件及时浏览最新的校园信息&#xff0c;同时涵盖许多功能&#xff0c;例如时间表查询&#xff0c;会议安排&#xff0c;校园地图&#xff0c;校车等。有需要的用户欢迎来绿色先锋网下载。 成纺移动校园简介…

pyqt 获取 UI 中组件_你想知道的React组件设计模式这里都有(上)

本文梳理了容器与展示组件、高阶组件、render props这三类React组件设计模式往期回顾&#xff1a;HBaseCon Asia 2019 Track 3 概要回顾随着 React 的发展&#xff0c;各种组件设计模式层出不穷。React 官方文档也有不少相关文章&#xff0c;但是组织稍显凌乱&#xff0c;本文就…

typora导出word指定样式_(二)最简洁的Markdowd编辑器:Typora

&#xff08;提醒&#xff1a;前面都是介绍和语法&#xff0c;想下载了就能用的直接看最后总结&#xff09;大家好&#xff0c;半瓶醋同学又来误人子弟了。现在办公文档或者邮件的处理&#xff0c;一般都是用微软的office word或者邮件自带的编辑器。但是用word或者邮件自带编辑…

使用数据库中的Java流制作数据透视表

来自数据库行和表的原始数据不能为人类读者提供太多了解。 相反&#xff0c;如果我们对数据执行某种聚合&#xff0c;则人类更有可能看到数据模式 在展示给我们之前。 数据透视表是聚合的一种特定形式&#xff0c;我们可以在其中应用排序&#xff0c;求平均值或求和之类的操作…

asynchttpclient 超时_dnf这才是混子的毕业套装,却发现超时空漩涡不买账!

dnf这才是混子的毕业套装&#xff0c;却发现超时空漩涡不买账&#xff01;按道理来说&#xff0c;光兵和帕拉丁穿这套装备去混团是最好的&#xff0c;结果现在超时空漩涡不要&#xff01;虽然说兵法套是95最好的魂之涛&#xff0c;但是这个混子套属性真心弱爆&#xff0c;不如正…

win7亮度怎么调_揭秘极米NEW Z8X投影仪怎么样?千万不要上当?!!!!【揭秘反馈

反馈测评极米NEW Z8X投影仪怎么样?求真实点评注意事项极米NEW Z8X投影仪怎么样?靠谱真实回答 外形外观&#xff1a;简约时尚大气&#xff0c;手感不错&#xff01;\n投影亮度&#xff1a;1080P、4K&#xff0c;都能做到&#xff01;\n投影色彩&#xff1a;非常好&#xff0c;…

Paw 百度ai_直面落地!百度EasyDL产业智能创新大赛成果覆盖能源、交通、水利民生重业...

物体检测模型实现高压线路隐患检测、图像分类实现短视频快速剪辑和量产、文本情感分类辅助潜在心理疾病患者自发检测、图片识别车辆轮轴数监管车辆载重……每一个创想都能简单快速实现&#xff0c;没有AI开发基础的小伙伴们也能做到&#xff01;这一切都缘于百度零门槛AI开发平…

Java 9、10及更高版本:Java平台的未来

您紧跟Java平台新功能的秘密武器 自去年9月发布Java 9以来&#xff0c;感觉整个平台都经历了重大变化。 在我们甚至无法确定Java 9所能提供的一切之前&#xff0c;我们已经在标记Java 10的发布。现在&#xff0c;我们已经开始期待Java 11在2018年9月发布。 Oracle决定为Java平…

c fread 快读 详解_奔驰ACC(自适应巡航系统)详解

什么是ACC自适应巡航&#xff1f;ACC自适应巡航( Adaptive Cruise Control )&#xff0c;又可称为智能巡航控制系统&#xff0c;简称ACC系统&#xff0c;它是在传统巡航控制基础上发展起来的新一代汽车驾驶员辅助驾驶系统。它将汽车自动巡航控制系统CCS 和车辆前向撞击报警系统…

php使用邮件找回密码,php利用Zend_Mail发送邮件(实现邮件重设密码功能)

[php]代码库<?php include_once conn/conn.php;require_once Zend/Mail.php;//调用发送邮件的文件require_once Zend/Mail/Transport/Smtp.php;//调用SMTP验证文件$reback 0;$name $_GET[foundname];$question $_GET[question];$answer $_GET[answer];$sql "sele…

_Linux 最常用命令整理,建议收藏!

Linux是目前应用最广泛的服务器操作系统&#xff0c;基于Unix&#xff0c;开源免费&#xff0c;由于系统的稳定性和安全性&#xff0c;市场占有率很高&#xff0c;几乎成为程序代码运行的最佳系统环境。linux不仅可以长时间的运行我们编写的程序代码&#xff0c;还可以安装在各…

hadoop可以解决什么问题_快速解决皮带机轴磨损问题可以这样做

皮带机是皮带输送机的简称&#xff0c;皮带机运用输送带的连续或间歇运动来输送各种轻重不同的物品&#xff0c;既可输送各种散料&#xff0c;也可输送各种纸箱、包装袋等单件重量不大的件货&#xff0c;用途广泛。皮带机运行时轴磨损是一个很常见的设备问题&#xff0c;某企业…

dbassit 包_CELINE新包,篮子包、圆盒包、腋下包、托特包等

CELINE 2021春夏女装系列以纪录片形式发布&#xff0c;由创意总监 Hedi Slimane 执导并设计配乐&#xff0c;在摩纳哥路易二世体育场取景。CELINE 2021春夏时装秀本季作品以「一代人的肖像」为题&#xff0c;在复古优雅中融入富有街头感的运动元素。CELINE 2021春夏时装秀女孩们…

bootstrap 悬浮固定_CST Tech Tips - 流式细胞术中如何固定和通透细胞?

CST TECH TIPS 系列课程 欢迎关注「CST博士互助平台」 有关流式细胞术(Flow Cytometry&#xff0c;FCM)实验步骤中的固定和通透化&#xff0c;你需要了解什么&#xff1f;进行流式细胞术&#xff0c;如果你所有的靶标均在外表面表达&#xff0c;那么可使用活细胞。但当你靶向胞…