结合Poi实现可读取Excel的文件选择对话框
第一步:ApachePoi的jar包导全,不全会出现异常。
第二步:写就完事了:此例为读取特定模板的excel,仅供参考,根据实际需求改写。
import java.awt.Container;
import java.awt.Dimension;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.UnsupportedEncodingException;
import javax.swing.JFileChooser;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
import javax.swing.WindowConstants;
import javax.swing.filechooser.FileFilter;
import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.ss.usermodel.Sheet;
import org.apache.poi.ss.usermodel.Workbook;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
private JLabel label = null;
private JTextArea textarea = null;
private JFileChooser fileChooser = null;
f = new JFrame("FileChooser Example");
Container contentPane = f.getContentPane();
textarea = new JTextArea();
JScrollPane scrollPane = new JScrollPane(textarea);
scrollPane.setPreferredSize(new Dimension(350, 300));
JButton b1 = new JButton("新建文件");
b1.addActionListener(this);
JButton b2 = new JButton("存储文件");
b2.addActionListener(this);
panel.add(b1);
panel.add(b2);
contentPane.add(scrollPane, BorderLayout.CENTER);
contentPane.add(panel, BorderLayout.SOUTH);
f.setVisible(true);
f.setDefaultCloseOperation(WindowConstants.HIDE_ON_CLOSE);//按x不会退出程序
}
new FileChooserUtils2();
}
File file = null;
int result;
fileChooser.setApproveButtonText("确定");
fileChooser.setDialogTitle("打开文件");
fileChooser.addChoosableFileFilter(new JAVAFileFilter("xls", "xlsx")); //加载过滤器
fileChooser.addChoosableFileFilter(new JAVAFileFilter("java"));
result = fileChooser.showOpenDialog(f);
textarea.setText("");
if (result == JFileChooser.APPROVE_OPTION) {
file = fileChooser.getSelectedFile();
label.setText("您选择打开的文件名称为:" + file.getName());
} else if (result == JFileChooser.CANCEL_OPTION) {
label.setText("您没有选择任何文件");
}
String extension="";
int index = file.toString().lastIndexOf('.');
if (index > 0 && index < file.toString().length() - 1) {
extension = file.toString().substring(index + 1).toLowerCase();
}
if("xls".equals(extension)||"xlsx".equals(extension)) {
readExcel(file.toString());
}else {
readNoExcel(file.toString());
}
if (e.getActionCommand().equals("存储文件")) {
result = fileChooser.showSaveDialog(f);
file = null;
file = fileChooser.getSelectedFile();
label.setText("您选择存储的文件名称为:" + file.getName());
} else if (result == JFileChooser.CANCEL_OPTION) {
label.setText("您没有选择任何文件");
}
try {
fileOutStream = new FileOutputStream(file);
} catch (FileNotFoundException e2) {
label.setText("File Not Found");
return;
}
fileOutStream.write(content.getBytes());
} catch (IOException e2) {
label.setText("写入文件错误");
} finally {
try {
if (fileOutStream != null)
fileOutStream.close();
} catch (IOException e3) {
}
}
private void readNoExcel(String file) {
FileInputStream fileInStream = null;
InputStreamReader isr = null;
BufferedReader reader = null;
if (file != null) {
try {
fileInStream = new FileInputStream(file);
isr = new InputStreamReader(fileInStream, "UTF-8");
reader = new BufferedReader(isr);
} catch (FileNotFoundException e2) {
label.setText("File Not Found");
return;
} catch (UnsupportedEncodingException e3) {
label.setText("File Not Found");
return;
}
while ((readStr = reader.readLine()) != null) {
textarea.append(readStr + "\n");
}
} catch (IOException e2) {
label.setText("写入文件错误");
} finally {
try {
if (fileInStream != null)
fileInStream.close();
} catch (IOException e3) {
}
}
private void readExcel(String fileName) {
Workbook workbook = null;
Row row = null;
//获取Excel文档
workbook = getWorkbook(fileName);
//获取Excel文档的第一个sheet页
Sheet sheet = workbook.getSheetAt(0);
//获取文档中已保存数据的行数
int rowNum = sheet.getPhysicalNumberOfRows();
//获取第三行
row = sheet.getRow(2); //实现的是读取特定模板的excel,根据需求修改。
int colnum=5;
for (int i = 2; i < rowNum; i++) {
row = sheet.getRow(i);
if (null != row)
{
//获取当前行已保存数据的最大列数
colnum = row.getPhysicalNumberOfCells();
for (int j = 0; j < colnum; j++) {
Cell cell = row.getCell(j);
textarea.append(getValueFromCell(cell)+" ");
if(j==colnum-1) {
textarea.append("\n");
}
}
}
}
}
Workbook workbook = null;
String suffix = fileName.substring(fileName.lastIndexOf(".") + 1);
InputStream in = null;
try {
in = new FileInputStream(fileName);
if ("xls".equals(suffix))
{
workbook = new HSSFWorkbook(in);
}
else if ("xlsx".equals(suffix))
{
workbook = new XSSFWorkbook(in);
}
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
return workbook;
}
private static String getValueFromCell(Cell cell) {//获取单元格的值ֵ
String value = null;
if (null == cell)
{
return "";
}
//判断cell类型
switch(cell.getCellType()){
case NUMERIC:{
value = ""+(int)cell.getNumericCellValue();
break;
}
case STRING:{
value = cell.getStringCellValue();
break;
}
default:
value = "";
}
return value;
}
}
String ext;
String ext2;
this.ext = ext;
}
this.ext = ext;
this.ext2 = ext2;
}
if (file.isDirectory())
return true;
int index = fileName.lastIndexOf('.');
if (index > 0 && index < fileName.length() - 1) {
String extension = fileName.substring(index + 1).toLowerCase();
if (extension.equals(ext) || extension.equals(ext2))
return true;
}
return false;
}
if (ext.equals("java"))
return "JAVA Source File (*.java)";
if (ext.equals("xls") && ext2.equals("xlsx"))
return "JAVA Source File (*.xls/.xlsx)";
return "";
}
}


结合Poi实现可读取Excel的文件选择对话框的更多相关文章
- Java小知识----POI事件模式读取Excel 2007
一.知识背景 1.读取excel的方法选择问题 java中读excel中的时间,我们通常用POI去解析,在使用new HSSFWorkbook(NEW FileInputStream(excelFil ...
- 前端读取Excel报表文件 js-xlsx
1.http://www.cnblogs.com/imwtr/p/6001480.html (前端读取Excel报表文件) 2.https://github.com/SheetJS/js-xlsx
- python读取Excel表格文件
python读取Excel表格文件,例如获取这个文件的数据 python读取Excel表格文件,需要如下步骤: 1.安装Excel读取数据的库-----xlrd 直接pip install xlrd安 ...
- 利用JFileChooser实现文件选择对话框
简单的文件选择对话框: package mypackage;/** * 打开文件和存储文件 */import java.awt.BorderLayout;import java.awt.Contain ...
- VBScript - 弹出“文件选择对话框”方法大全!
本文记录,VBScript 中,各种打开 "文件选择对话框" 的方法. 实现方法-1 (mshta.exe): 首先,我们要实现的就是,弹出上面的这个"文件选择对话框&q ...
- 文件选择对话框:CFileDialog
程序如下: CString FilePathName; //文件名参数定义 CFileDialog Dlg(TRUE,NULL,NULL, ...
- NX二次开发-UFUN文件选择对话框UF_UI_create_filebox
NX11+VS2013 #include <uf.h> #include <uf_ui.h> UF_initialize(); //文件选择对话框 char sPromptSt ...
- 使用Apache下poi创建和读取excel文件
一:使用apache下poi创建excel文档 @Test /* * 使用Apache poi创建excel文件 */ public void testCreateExcel() { // 1:创建一 ...
- POI原生导入读取EXCEL
好久没用 最近项目有冲突 所以又用到了这个 谁知道以后还会不会用 先记下来吧 直接扔项目里 调方法就OK 了. 记录一下....不想再写类似这样的东西了 import org.apache.poi.h ...
随机推荐
- JavaScript中 函数的创建和调用
基础概念:定义函数的方式 一般定义函数有两种方式: 1:函数的声明 2:函数表达式 参考资料:https://blog.csdn.net/xixiruyiruyi/article/de ...
- EOJ 1127. 多边形面积(计算几何)
题目链接:1127. 多边形面积(计算几何) 题意 按逆时针顺序给出 \(n\) 个点的坐标,求这些点围成的多边形的面积. 思路 选择多边形上的一个点,然后每次枚举之后的两个点,计算叉积,注意要保留符 ...
- shell 从函数文件中调用函数的方法
你可以把所有的函数存储在一个函数文件中 你可以把所有的文件函数加载到当前脚本或命令行 加载函数文件中所有函数的方法: source xxx.sh
- python学习笔记:通配符之glob模块(过滤)
glob模块用来查找文件目录和文件,可以和常用的find功能进行类比.glob支持*?[]这三种通配符.返回的数据类型是list.常见的两个方法有glob.glob()和glob.iglob(),ig ...
- Spring入门,使用Maven进行管理
一,使用maven创建项目原型 mvn archetype:generate 进入交互模式创建项目原型,根据网速不同,跳出设置选项的时间不定 第一个选项 直接Enter即可,表示使用默认值502,后面 ...
- Linux NIO 系列(03) 非阻塞式 IO
目录 一.非阻塞式 IO 附:非阻塞式 IO 编程 Linux NIO 系列(03) 非阻塞式 IO Netty 系列目录(https://www.cnblogs.com/binarylei/p/10 ...
- zabbix-Graphs
图形 概述 随着大量的监控数据被采集到Zabbix中,如果用户可以以可视化的表现形式来查看发生了什么事情,那么和仅仅只有数字的表现形式比起来则更加轻松. 以下是进行图形设置的地方.图形可以一目了然地掌 ...
- accordion(分类)组件
一.依赖于 Panel(面板)组件 二.class加载方式 <div id="box" class="easyui-accordion" style=&q ...
- 解决code first Migration 增加外键时出现错误的问题
先上模型 Comment public class Comment { [Key] public int CommentId { get; set; } [Required] public int S ...
- 安装APK到android设备那些事儿
APK是AndroidPackage的缩写,即Android系统的应用软件安装包(apk).APK是类似Symbian Sis或Sisx的文件格式.通过将APK文件直接传到Android模拟器或And ...