介绍几种方法将Excel格式的文件导入到JTable中

How to import Excel file into JTable

Here are three way to do this.

  1. Use "JTableReadTableModelTask " to do this. ( recommended )
  2. Use "ReadTableModelTask" to do this
  3. Use ModelIO to do this.
The first and second the way will run in the background thread, the third way will run in current thread.

1. Use "JTableReadTableModelTask "to do this. (recommended)

Here is the sample code to import excel file:

JTable jTable = new JTable();
String excelFileName = "excelFileName.xls";
File file = new File(excelFileName );   //‘file’ is the file you want to load.
JProgressBar progressBar = new JProgressBar(); //‘progressBar’ will show how much data it have loaded.
JTableReadTableModelTask task = new JTableReadTableModelTask(file, null, progressBar, jTable);
task.execute();

2.Use "ReadTableModelTask"to do this.

Use ReadTableModelTask, you must inherit it first, and override its method done(),in the done method, you can use following statement to get a TableModel,  this is not convenient, so we recommend the first way to do this:
       Object o = get();
       if(o instanceof TableModel) {
TableModel model = (TableModel)get(); 
}

3.Use ModelIO to do this.

Here is the sample code, also you could put the following code into a background thread, For example: use javax.swing.SwingWorker.
Map m = new HashMap();
// you could set progressBar in the map,for example: m.put(ModelIO.PROGRESS_BAR, progressBar);
WorkBook book = ModelIO.readWorkBook(openUrl, format, m);
TableModel tableModel;
if(book.getSelectedSheet() != null) {
    tableModel = book.getSelectedSheet().getModel();
} else if(book.getSheetCount() > 0) {
    tableModel = book.getSheet(0).getModel();
}

 

奇新Java控件——Java控件提供商和Java RIA, Web, J2ME解决方案开发商

JComponentPack是基于Swing框架的Java GUI控件集合,它包括JDataGrid电子表格版本JDataGrid数据库版本JComponentSet--Java swing控件集


了解更多产品。。。
 

1390586.html?type=1

--------------------------
新闻: 微软称已与国内主流网站合作测试IE8兼容性
导航: 博客园首页   知识库   新闻   招聘   社区   小组   博问   网摘   找找看

转载于:https://my.oschina.net/javastudy/blog/32

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,这是一个比较常见的需求,可以通过以下步骤来实现: 1. 创建一个 JTable 对象,用于显示数据库的信息。 2. 从数据库获取数据,通常可以使用 JDBC API 来访问数据库。 3. 将从数据库获取的数据放入 JTable ,可以使用 DefaultTableModel 类来实现。 4. 为 JTable 添加一个 ListSelectionListener 监听器,当用户点击表格的某一行时,可以获取该行的数据,并进行下一步操作。 下面是一个简单的示例代码,可以作为参考: ```java import java.awt.BorderLayout; import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.Statement; import javax.swing.JFrame; import javax.swing.JPanel; import javax.swing.JScrollPane; import javax.swing.JTable; import javax.swing.event.ListSelectionEvent; import javax.swing.event.ListSelectionListener; import javax.swing.table.DefaultTableModel; public class JTableDemo extends JFrame implements ListSelectionListener { private JTable table; private DefaultTableModel tableModel; public JTableDemo() { super("JTable Demo"); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); // 创建表格模型 tableModel = new DefaultTableModel(); tableModel.addColumn("ID"); tableModel.addColumn("Name"); tableModel.addColumn("Age"); // 从数据库获取数据,并添加到表格模型 try { Class.forName("com.mysql.jdbc.Driver"); Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/test", "root", ""); Statement stmt = conn.createStatement(); ResultSet rs = stmt.executeQuery("SELECT * FROM persons"); while (rs.next()) { int id = rs.getInt("id"); String name = rs.getString("name"); int age = rs.getInt("age"); tableModel.addRow(new Object[]{id, name, age}); } rs.close(); stmt.close(); conn.close(); } catch (Exception e) { e.printStackTrace(); } // 创建表格,并设置监听器 table = new JTable(tableModel); table.getSelectionModel().addListSelectionListener(this); // 添加表格到窗口 JPanel panel = new JPanel(new BorderLayout()); panel.add(new JScrollPane(table), BorderLayout.CENTER); getContentPane().add(panel); pack(); setVisible(true); } @Override public void valueChanged(ListSelectionEvent e) { if (!e.getValueIsAdjusting()) { int row = table.getSelectedRow(); if (row >= 0) { int id = (int) tableModel.getValueAt(row, 0); String name = (String) tableModel.getValueAt(row, 1); int age = (int) tableModel.getValueAt(row, 2); // TODO: 根据数据进行下一步操作 } } } public static void main(String[] args) { new JTableDemo(); } } ``` 在这个示例,我们使用了 MySQL 数据库,并在 persons 表保存了一些数据。当用户点击表格的某一行时,我们可以获取该行的数据,并进行下一步操作。你可以根据实际需求,修改代码以适应你的应用场景。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值