JTable内容保存至excel

import java.awt.*;
import java.awt.event.*;
import java.util.Vector;
import javax.swing.*;
import javax.swing.event.*;
import javax.swing.table.*;
import java.io.File;
import java.io.*;
//import javax.swing.filechooser.FileFilter;
public class testTable implements ActionListener
{ JFrame f=new JFrame();
  JTable table = null;
  JLabel label= null;
  DefaultTableModel defaultModel =null;
  JFileChooser fileChooser=new JFileChooser();//文件选择
  public testTable()
  {
   
    Object[][] p=
    {
      {"王磊",new Integer(20),new Integer(30),new Integer(20)},
      {"张凡",new Integer(20),new Integer(30),new Integer(20)},
      {"周欣",new Integer(20),new Integer(30),new Integer(20)},
      {"张丽",new Integer(20),new Integer(30),new Integer(20)},
      };
     
  
   String[] n={"姓名","班级","年龄","薪水"};
   defaultModel =new DefaultTableModel(p,n);//采用default模式
   table =new JTable(defaultModel);
   table.setPreferredScrollableViewportSize(new Dimension(400,80));
   JScrollPane s=new JScrollPane(table);
   JPanel panel= new JPanel();
  
       
         JButton b2=new JButton("增加行");
         panel.add(b2);
        b2.addActionListener(this);
          JButton b3=new JButton("删除行");
          panel.add(b3);
        b3.addActionListener(this);
           JButton b4=new JButton("保存");//保存按钮
           panel.add(b4);
        b4.addActionListener(this);
    Container contentPane =f.getContentPane();
    contentPane.add(panel,BorderLayout.SOUTH);
    contentPane.add(s,BorderLayout.CENTER);
    f.setTitle("JTableDemo");
    f.pack();
    f.setVisible(true);
   
  
    f.addWindowListener(new WindowAdapter()//关闭对话框
    {
     public void windowClosing(WindowEvent e)
     {
         System.exit(0);
         }
         }
         );
        }
        public void actionPerformed(ActionEvent e)//按键响应
        {
         
         
           File file =new File("");//
          int result; 
       
          if (e.getActionCommand().equals("删除行"))//单击删除按钮删除行
          {
            int rowcount=defaultModel.getRowCount()-1;
            if(rowcount>=0)
            {
                defaultModel.removeRow(rowcount);
                defaultModel.setRowCount(rowcount);
             }
           }
           
                         
              if(e.getActionCommand().equals("打开")) //单击打开文件
         try{ 
         fileChooser.setApproveButtonText("确定");
         fileChooser.setDialogTitle("打开文件");
         result=fileChooser.showOpenDialog(f);
          if( result==JFileChooser.APPROVE_OPTION)
            {
            file=fileChooser.getSelectedFile();
            label.setText("要打开的文件为:"+file.getName());
            }
            else if( result==JFileChooser.CANCEL_OPTION)
             {
               label.setText("你没有打开任何文件");
             }
           }
         catch(Exception ee){System.out.print("error"+ee); }
  
        
  
        
     if(e.getActionCommand().equals("保存"))
   try {    
    
            fileChooser.setFileSelectionMode(JFileChooser.FILES_AND_DIRECTORIES);
        fileChooser.showSaveDialog(f);//显示保存对话框
         String fi = file.getAbsolutePath()+".xls";
        System.out.println(file);
         FileWriter out = new FileWriter(fi);//新建输出
        for (int i = 0; i < table.getColumnCount(); i++) {
                                  out.write(table.getColumnName(i) + "\t");
                                 }
                 out.write("\n");
                      for (int i = 0; i < table.getRowCount(); i++) {
                   for (int j = 0; j < table.getColumnCount(); j++) {
                      out.write(table.getValueAt(i, j).toString() + "\t");
                                             }
                                    out.write("\n");
                                              }
                      out.close();
                  JOptionPane.showMessageDialog(null, "文件导出成功");
                   Runtime.getRuntime().exec("cmd /c start "" "" + fi+""");
                }
// 打开生成的excel文件
   catch (Exception ee) { ee.printStackTrace();   }
     table.ridate();
     
     }
 
           
              public static void main(String args[])
              {
                new testTable();
               
              }
 }

JTableExcel 图表是常被用在网格或表格中显示数据。通常,用户希望输入JTable数据已经存在于 Excel 电子表格中。Excel 格式使用在非 Excel 软件中来实现导入-导出功能。因为如此,Java 软件也应该提供通用的剪贴板功能,例如在 JTableExcel 间复制和粘贴。本文展示了如何使用系统粘贴板在 Java 程序和 Excel 间复制数据。使用这一 Java 技巧中提供的适配器类,只需一行代码即可添加在 JTables 和 Excel 间复制和粘贴信息的功能。请注意,由于未签名的 applet 不能使用系统剪贴板,此功能不适用于这些 Java 程序。 当今很多业务应用程序都是使用 Java 开发的,并且以后这种用 Java 开发的应用会更多。而在许多应用程序都使用了 Swing 的 JTable 组件,以类似电子表格的格式显示数据。如果业务应用程序可以将数据导入 Microsoft Excel 和从 Microsoft Excel 中导出数据,则会为用户带来方便,使用户可以使用无处不在的该电子表格程序的强大功能。此 Java 技巧将帮助您理解系统剪贴板,并使您的 JTable 能够与 Excel 交互和互操作。您将看到,通过在当前应用程序中仅仅添加另外的一行代码即可实现这一有用功能的添加。 要实现这一目标,需要做的只是复制这给出的文件 ExcelAdapter.java,对其进行编译,并确保您的应用程序可以找到 ExcelAdapter.class 文件;做完后,JTable 就可以与 Excel 进行通话了!我们将向您展示仅通过这一行代码,如何实现到 Excel 的复制 (Ctrl+C) 和粘贴 (Ctrl+V) 以及从 Excel 进行的复制和粘贴。另外还提供了一个使用 ExcelAdapter 的示例应用程序
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值