哪位知道怎么样将JTable中的数据另存为EXCEL文件?

解决方案 »

  1.   

    可以到 
    http://jakarta.apache.org/poi/index.html 
    去下载POI包。 
    有关于读写EXCEL文件的API 
      

  2.   

    import java.awt.*; 
    import java.awt.event.*; 
    import javax.swing.*; 
    import java.awt.datatransfer.*; 
    import java.util.*; /** 
    * ExcelAdapter 实现 JTables 中的复制粘贴 
    * 剪贴板功能。 适配器所用的剪贴板数据格式 
    * 与 Excel 所用的剪贴板格式兼容。这提供了 
    * 支持的 JTables 和 Excel 间的互操作。 
    */ 
    public abstract class ExcelAdapter 
    implements ActionListener { 
    protected String rowstring, value; 
    protected Clipboard system; 
    protected StringSelection stsel; 
    protected JTable jTable1; /** 
    * Excel 适配器由 JTable 构成, 
    * 它实现了 JTable 上的复制粘贴 
    * 功能,并充当剪贴板监听程序。 
    */ public ExcelAdapter(JTable myJTable) { 
    jTable1 = myJTable; 
    KeyStroke copy = KeyStroke.getKeyStroke(KeyEvent.VK_C, ActionEvent.CTRL_MASK, false); // 确定复制按键用户可以对其进行修改 
    // 以实现其它按键组合的复制功能。 
    KeyStroke paste = KeyStroke.getKeyStroke(KeyEvent.VK_V, ActionEvent.CTRL_MASK, false); // 确定粘贴按键用户可以对其进行修改 
    // 以实现其它按键组合的复制功能。 
    jTable1.registerKeyboardAction(this, "Copy", copy, JComponent.WHEN_FOCUSED); 
    jTable1.registerKeyboardAction(this, "Paste", paste, JComponent.WHEN_FOCUSED); 
    system = Toolkit.getDefaultToolkit().getSystemClipboard(); 
    } /** 
    * 此适配器运行图表的公共读方法。 
    */ 
    public JTable getJTable() { 
    return jTable1; 
    } public void setJTable(JTable jTable1) { 
    this.jTable1 = jTable1; 

    public abstract void copyAction(); public abstract void pasteAction(); public boolean checkSelection(){ 
    // 检查以确保我们仅选择了单元格的相邻块 
    int numcols = jTable1.getSelectedColumnCount();//选中行数 
    int numrows = jTable1.getSelectedRowCount();//选中列数 
    int[] rowsselected = jTable1.getSelectedRows(); 
    int[] colsselected = jTable1.getSelectedColumns(); 
    int last_row_idx = rowsselected[rowsselected.length - 1];//选中的最后一行 
    int first_row_idx = rowsselected[0];//选中的第一行 
    int last_col_idx = colsselected[colsselected.length - 1];// 选中的最后一列 
    int first_col_idx = colsselected[0];//选中的第一列 
    if (!((numrows - 1 == last_row_idx - first_row_idx && numrows == rowsselected.length) 
    && (numcols - 1 == last_col_idx - first_col_idx && numcols == colsselected.length))){ 
    JOptionPane.showMessageDialog(null, "复制表格无效", 
    "所选表格单元不连续", 
    JOptionPane.ERROR_MESSAGE); 
    return false; 

    else 
    return true; 
    } /** 
    * 在我们监听此实现的按键上激活这种方法。 
    * 此处,它监听复制和粘贴 ActionCommands。 
    * 包含不相邻单元格的选择导致选择无效, 
    * 而且此后复制动作无法执行。 
    * 粘贴的方法是将选定内容的左上角与 
    * JTable 的当前选定内容的第一个元素对齐。 
    */ 
    public void actionPerformed(ActionEvent e) { 
    if (e.getActionCommand().compareTo("Copy") == 0) { 
    if(!checkSelection()) 
    return; 
    this.copyAction(); 

    if (e.getActionCommand().compareTo("Paste") == 0) { 
    this.pasteAction(); 



    这是个利用Ctrl + C和Ctrl + V来复制粘贴的方法,用这个类来处理你JTable上的热键事件就可以了。
      

  3.   

    下载后怎么样才能使用阿?放在哪个目录下?我用的是JBUILDER还有,你们说的和EXCEL互动还是要通过Ctrl + C和Ctrl + V来转换,没有直接另存为EXCEL格式吗?
      

  4.   

    实际上从Table到Excel
    从Table里得到数据显然不是什么困难的事情。
    关键是怎么存进Excel里。
    JXL和POI是常用的,我比较习惯用JXL。