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

jide_123 2005-07-18 03:09:18
哪位知道怎么样将JTable中的数据另存为EXCEL文件?
...全文
141 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
rainfox0010 2005-07-28
  • 打赏
  • 举报
回复
实际上从Table到Excel
从Table里得到数据显然不是什么困难的事情。
关键是怎么存进Excel里。
JXL和POI是常用的,我比较习惯用JXL。
jide_123 2005-07-18
  • 打赏
  • 举报
回复
下载后怎么样才能使用阿?放在哪个目录下?我用的是JBUILDER

还有,你们说的和EXCEL互动还是要通过Ctrl + C和Ctrl + V来转换,没有直接另存为EXCEL格式吗?
harbor1981 2005-07-18
  • 打赏
  • 举报
回复
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上的热键事件就可以了。
harbor1981 2005-07-18
  • 打赏
  • 举报
回复
可以到
http://jakarta.apache.org/poi/index.html
去下载POI包。
有关于读写EXCEL文件的API

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧