将Excel中的数据在JTable中显示


  1175人阅读  评论(6)  收藏  举报

        该程序实现了通过读取Excel文件,将Excel文件中的数据显示在JTable中,需要传递要读取的Excel文件file,DefaultTableModel,和JTable就可以实现了。

[java]  view plain copy
  1. import java.io.*;  
  2.   
  3. import javax.swing.JOptionPane;  
  4. import javax.swing.JTable;  
  5. import javax.swing.table.DefaultTableModel;  
  6.   
  7. import jxl.Cell;  
  8. import jxl.CellType;  
  9. import jxl.LabelCell;  
  10. import jxl.NumberCell;  
  11. import jxl.Sheet;  
  12. import jxl.Workbook;  
  13. import jxl.read.biff.BiffException;  
  14.   
  15. public class outExcel {  
  16.   
  17.     public boolean readExcel(File file,DefaultTableModel tableModel,JTable jTable){  
  18.         Workbook rwb = null;  
  19.           
  20.         Object[] object = new Object[jTable.getColumnCount()];  
  21.         try{  
  22.               
  23.             FileInputStream is = new FileInputStream(file);  
  24.             //创建一个workbook类读取excel文件  
  25.             rwb = Workbook.getWorkbook(is);  
  26. //          得到第i个工作薄  
  27.             Sheet st = rwb.getSheet(0);//这里有两种方法获取sheet表,1为名字,而为下标,从0开始  
  28. //          //得到st的列数  
  29. //          System.out.println("列"+ st.getColumns());  
  30. //          //得到st的行数  
  31. //          System.out.println("行"+ st.getRows());  
  32.             if(st.getRows()>2){  
  33.                 for(int t=tableModel.getRowCount()-1;t>=0;t--){  
  34.                     tableModel.removeRow(t);  
  35.                 }  
  36.                 //行循环  
  37.                 for(int i = 1;i<st.getRows();i++){  
  38.                     //列循环  
  39.                     for(int j = 0;j<st.getColumns();j++){  
  40.                         //      得到第j列第i行的数据  
  41.                         Cell c00 = st.getCell(j,i);  
  42.                         if(c00.getType() == CellType.LABEL)  
  43.                         {  
  44.                             LabelCell labelc00 = (LabelCell)c00;  
  45.                             object[j] = labelc00.getString();  
  46.                             //jTable.setValueAt(labelc00.getString(), i-1, j);  
  47.                         }else if(c00.getType() == CellType.NUMBER)  
  48.                         {  
  49.                             Double numd;  
  50.                             int numi;  
  51.                             NumberCell numc10 = (NumberCell)c00;  
  52.                             numd = new Double(numc10.getValue());     
  53.                             numi = numd.intValue();  
  54.                             object[j] = numi;  
  55. //                          jTable.setValueAt(numi, i-1, j);  
  56.                         }  
  57.                           
  58.                     }  
  59.                     tableModel.addRow(object);  
  60.                 }  
  61.             }else{  
  62.                 for(int i = 1;i<st.getRows();i++){  
  63.                     //列循环  
  64.                     for(int j = 0;j<st.getColumns();j++){  
  65.                         //      得到第j列第i行的数据  
  66.                         Cell c00 = st.getCell(j,i);  
  67.                         if(c00.getType() == CellType.LABEL)  
  68.                         {  
  69.                             LabelCell labelc00 = (LabelCell)c00;  
  70.                             object[j] = labelc00.getString();  
  71.                             //jTable.setValueAt(labelc00.getString(), i-1, j);  
  72.                         }else if(c00.getType() == CellType.NUMBER)  
  73.                         {  
  74.                             Double numd;  
  75.                             int numi;  
  76.                             NumberCell numc10 = (NumberCell)c00;  
  77.                             numd = new Double(numc10.getValue());     
  78.                             numi = numd.intValue();  
  79.                             object[j] = numi;  
  80. //                          jTable.setValueAt(numi, i-1, j);  
  81.                         }  
  82.                           
  83.                     }  
  84.                     tableModel.addRow(object);  
  85.                 }  
  86.             }  
  87.             JOptionPane.showMessageDialog(null,"导入"+file.getName()+"成功","成功",JOptionPane.INFORMATION_MESSAGE);  
  88.               
  89.         }catch(FileNotFoundException e){  
  90.               
  91.             System.out.println("文件"+file.getName()+"没有找到");  
  92.               
  93.             return false;  
  94.               
  95.         } catch (BiffException e) {  
  96.   
  97.             System.out.println("文件格式不正确");  
  98.               
  99.             return false;  
  100.               
  101.         } catch (IOException e) {  
  102.               
  103.             System.out.println("文件读写失败");  
  104.               
  105.             return false;  
  106.               
  107.         }finally{  
  108. //          关闭  
  109.             rwb.close();  
  110.         }  
  111.         return true;      
  112. }  
  113.   
  114.   
  115. }  



http://blog.csdn.net/fzllcc/article/details/4532921

  • 0
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值