Java 使用Excel文件中的数据刷新表JTable
我有一个用Excel文件中的数据填充JTable的代码。问题是,在将数据设置到JTable之后,我无法使用新数据重新绘制表。 信息计费正常,但不刷新表。 我通过按钮“Procesar”对数据充电,然后选择一个文件。我的代码是: `Java 使用Excel文件中的数据刷新表JTable,java,swing,excel,jtable,Java,Swing,Excel,Jtable,我有一个用Excel文件中的数据填充JTable的代码。问题是,在将数据设置到JTable之后,我无法使用新数据重新绘制表。 信息计费正常,但不刷新表。 我通过按钮“Procesar”对数据充电,然后选择一个文件。我的代码是: ` 导入java.awt.EventQueue; 导入javax.swing.JFrame; 导入javax.swing.JFileChooser; 导入javax.swing.JButton; 导入javax.swing.JOptionPane; 导入javax.swi
导入java.awt.EventQueue;
导入javax.swing.JFrame;
导入javax.swing.JFileChooser;
导入javax.swing.JButton;
导入javax.swing.JOptionPane;
导入javax.swing.JScrollPane;
导入javax.swing.JTextField;
导入java.awt.event.MouseAdapter;
导入java.awt.event.MouseEvent;
导入java.io.File;
导入java.io.FileInputStream;
导入java.util.Vector;
导入javax.swing.JTable;
导入javax.swing.table.DefaultTableModel;
导入org.apache.poi.hssf.usermodel.HSSFDateUtil;
导入org.apache.poi.ss.usermodel.Cell;
导入org.apache.poi.xssf.usermodel.XSSFCell;
导入org.apache.poi.xssf.usermodel.XSSFRow;
导入org.apache.poi.xssf.usermodel.xssfheet;
导入org.apache.poi.xssf.usermodel.xssf工作簿;
导入java.awt.Color;
导入javax.swing.JTextPane;
导入java.awt.TextArea;
导入javax.swing.border.MatteBorder;
公共课校长
{
私有文件;
向量头=新向量();
向量数据=新向量();
DefaultTableModel=新的DefaultTableModel(数据,标题);
私有JFrame;
私有JTextField txtRuta;
私人布顿布萨;
私人JButton btnProcesar;
专用鼠标头捕捉器鼠标头捕捉器;
专用MouseAdapter mouseAdapterBtnProcesar;
私有JTextPane txtPane=新JTextPane();
私人文本区文本区;
专用JTable表;
/**
*Método校长que lanza la aplicación
*/
公共静态void main(字符串[]args)
{
invokeLater(新的Runnable(){
公开募捐
{
尝试
{
主体窗口=新主体();
window.frame.setVisible(true);
}
捕获(例外e){
e、 printStackTrace();
}
}
});
}
/**
*克拉斯建造师。
*/
公共负责人(){
初始化();
}
/**
*框架视觉效果。
*/
私有void初始化()
{
不专业的管理者();
frame=新的JFrame();
框架.立根(100100613592);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.getContentPane().setLayout(null);
btnBuscar=新按钮(“客车”);
b.添加MouseListener(mouseadapterbnbuscar);
btnBuscar.立根(498,11,89,23);
frame.getContentPane().add(btnBuscar);
btnProcesar=新的JButton(“Procesar”);
btnProcesar.addMouseListener(mouseadapterbtprocesar);
btnProcesar.setBounds(498,40,89,23);
frame.getContentPane().add(btnProcesar);
txtRuta=新的JTextField();
立根(10,12,478,20);
frame.getContentPane().add(txtRuta);
txtRuta.setColumns(10);
textArea=新textArea();
textArea.setBounds(10,88577190);
frame.getContentPane().add(textArea);
table=新的JTable();
table.createDefaultColumnsFromModel();
表1.setboorder(新边框(1,1,1,1,(颜色)新颜色(0,0,0));
表.setUrrendersFocusonKeystroke(真);
table.setColumnSelectionAllowed(真);
table.setCellSelectionEnabled(真);
表.立根(10321577190);
frame.getContentPane().add(表);
}
/*这是一个很好的例子*/
私人空间(私人空间)
{
mouseAdapterBtnBuscar=新的MouseAdapter()
{
@凌驾
公共无效鼠标单击(鼠标事件arg0)
{
JFileChooser flsBuscador=新的JFileChooser();
int result=flsBuscador.showOpenDialog(null);
if(result==JFileChooser.APPROVE_选项)
{
file=flsBuscador.getSelectedFile();
setText(file.getAbsolutePath());
}
}
};
mouseAdapterBtnProcesar=新的MouseAdapter()
{
@凌驾
公共无效鼠标单击(鼠标事件arg0)
{
if(txtRuta.getText()==null | | txtRuta.getText()==“”| | txtRuta.getText().endsWith(“.xlsx”)==false)
{
JOptionPane.showMessageDialog(框架“La ruta no es correcta o el archivo no es soportado.”,“Información”,JOptionPane.WARNING_MESSAGE);
}
其他的
{
尝试
{
procesarachivo();
}
捕获(例外情况除外)
{
例如printStackTrace();
}
}
}
};
}
private void procesarachivo()引发异常
{
尝试
{
如果(文件!=null)
{
String text=“Inciando讲师…\n”;
FileInputStream fis=新的FileInputStream(文件);
XSSF工作簿=新XSSF工作簿(fis);
XSSFSheet sheet=workbook.getSheetAt(0);
XSSFRow行;
textArea.setText(text);
对于(int i=6;iimport java.awt.EventQueue;
import javax.swing.JFrame;
import javax.swing.JFileChooser;
import javax.swing.JButton;
import javax.swing.JOptionPane;
import javax.swing.JScrollPane;
import javax.swing.JTextField;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.io.File;
import java.io.FileInputStream;
import java.util.Vector;
import javax.swing.JTable;
import javax.swing.table.DefaultTableModel;
import org.apache.poi.hssf.usermodel.HSSFDateUtil;
import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.xssf.usermodel.XSSFCell;
import org.apache.poi.xssf.usermodel.XSSFRow;
import org.apache.poi.xssf.usermodel.XSSFSheet;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import java.awt.Color;
import javax.swing.JTextPane;
import java.awt.TextArea;
import javax.swing.border.MatteBorder;
public class Principal
{
private File file;
Vector header = new Vector();
Vector data = new Vector();
DefaultTableModel model = new DefaultTableModel(data,header);
private JFrame frame;
private JTextField txtRuta;
private JButton btnBuscar;
private JButton btnProcesar;
private MouseAdapter mouseAdapterBtnBuscar;
private MouseAdapter mouseAdapterBtnProcesar;
private JTextPane txtPane = new JTextPane();
private TextArea textArea;
private JTable table;
/**
* Método principal que lanza la aplicación
*/
public static void main(String[] args)
{
EventQueue.invokeLater(new Runnable() {
public void run()
{
try
{
Principal window = new Principal();
window.frame.setVisible(true);
}
catch (Exception e) {
e.printStackTrace();
}
}
});
}
/**
* Constructor de la clase.
*/
public Principal() {
initialize();
}
/**
* Inicializa el contenido del Frame visual.
*/
private void initialize()
{
inicializeHandlers();
frame = new JFrame();
frame.setBounds( 100, 100, 613, 592 );
frame.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE );
frame.getContentPane().setLayout( null );
btnBuscar = new JButton( "Buscar" );
btnBuscar.addMouseListener( mouseAdapterBtnBuscar );
btnBuscar.setBounds(498, 11, 89, 23);
frame.getContentPane().add( btnBuscar );
btnProcesar = new JButton( "Procesar" );
btnProcesar.addMouseListener( mouseAdapterBtnProcesar );
btnProcesar.setBounds( 498, 40, 89, 23 );
frame.getContentPane().add( btnProcesar );
txtRuta = new JTextField();
txtRuta.setBounds( 10, 12, 478, 20 );
frame.getContentPane().add( txtRuta );
txtRuta.setColumns( 10 );
textArea = new TextArea();
textArea.setBounds(10, 88, 577, 190);
frame.getContentPane().add(textArea);
table = new JTable();
table.createDefaultColumnsFromModel();
table.setBorder(new MatteBorder(1, 1, 1, 1, (Color) new Color(0, 0, 0)));
table.setSurrendersFocusOnKeystroke(true);
table.setColumnSelectionAllowed(true);
table.setCellSelectionEnabled(true);
table.setBounds(10, 321, 577, 190);
frame.getContentPane().add(table);
}
/*Método para controlar los listeners de los componentes.*/
private void inicializeHandlers()
{
mouseAdapterBtnBuscar = new MouseAdapter()
{
@Override
public void mouseClicked(MouseEvent arg0)
{
JFileChooser flsBuscador = new JFileChooser();
int result = flsBuscador.showOpenDialog(null);
if ( result == JFileChooser.APPROVE_OPTION )
{
file = flsBuscador.getSelectedFile();
txtRuta.setText( file.getAbsolutePath() );
}
}
};
mouseAdapterBtnProcesar = new MouseAdapter()
{
@Override
public void mouseClicked(MouseEvent arg0)
{
if ( txtRuta.getText() == null || txtRuta.getText() == "" || txtRuta.getText().endsWith(".xlsx") == false )
{
JOptionPane.showMessageDialog( frame, "La ruta no es correcta o el archivo no es soportado.", "Información", JOptionPane.WARNING_MESSAGE );
}
else
{
try
{
procesarArchivo();
}
catch( Exception ex )
{
ex.printStackTrace();
}
}
}
};
}
private void procesarArchivo() throws Exception
{
try
{
if ( file != null )
{
String text = "Inciando lectura...\n";
FileInputStream fis = new FileInputStream( file );
XSSFWorkbook workbook = new XSSFWorkbook(fis);
XSSFSheet sheet = workbook.getSheetAt(0);
XSSFRow row;
textArea.setText( text );
for ( int i = 6; i < sheet.getPhysicalNumberOfRows(); i ++ )
{
Vector d = new Vector();
row = sheet.getRow( i );
for ( int j = 0; j < row.getPhysicalNumberOfCells(); j++ )
{
XSSFCell cell = row.getCell( j );
if ( cell != null )
{
if (cell.getCellType() == Cell.CELL_TYPE_NUMERIC)
{
if ( HSSFDateUtil.isCellDateFormatted(cell) )
{
d.add( cell.getDateCellValue().toString().trim() );
text = text + cell.getDateCellValue().toString().trim() + "\n";
textArea.setText( text );
}
else
{
d.add( Double.toString( cell.getNumericCellValue() ).trim() );
text = text + Double.toString( cell.getNumericCellValue() ).trim() + "\n";
textArea.setText( text );
}
}
else
{
d.add( cell.getStringCellValue().trim() );
text = text + cell.getStringCellValue().trim() + "\n";
textArea.setText( text );
}
if ( i == 6 )
{
header.add(d);
}
}
else
{
d.add("NULL");
}
}
d.add( "\n" );
data.add( d );
}
model = new DefaultTableModel(data, header);
table.setModel(model);
JScrollPane scroll = new JScrollPane(table);
frame.getContentPane().add( scroll );
}
}
catch( Exception ex )
{
ex.printStackTrace();
}
}
}
JScrollPane scroll = new JScrollPane(table);
frame.getContentPane().add( scroll );
frame.getContentPane().revalidate();