哪位知道怎么样将JTable中的数据另存为EXCEL文件? 哪位知道怎么样将JTable中的数据另存为EXCEL文件? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 可以到 http://jakarta.apache.org/poi/index.html 去下载POI包。 有关于读写EXCEL文件的API 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上的热键事件就可以了。 下载后怎么样才能使用阿?放在哪个目录下?我用的是JBUILDER还有,你们说的和EXCEL互动还是要通过Ctrl + C和Ctrl + V来转换,没有直接另存为EXCEL格式吗? 实际上从Table到Excel从Table里得到数据显然不是什么困难的事情。关键是怎么存进Excel里。JXL和POI是常用的,我比较习惯用JXL。 请问强人,java如何强制删除文件或目录? JFileChooser 保存文件时根据选择的文件类型改变文件后缀名 JDK 代码质量分析 关于布局问题 问一下大家,用JDK怎么进行单步调试? java中如何调用存储过程并获得out参数!高分 关于package的问题 技术 求解: CORBA & COM 奇怪:同样的程序wsad5 错误,Jcreate 2.5pro正确 请教Swing 与AWT的关系? 请问如何在java中导如入用3DMAX做成的.MAX模型??? 鼠标问题。
http://jakarta.apache.org/poi/index.html
去下载POI包。
有关于读写EXCEL文件的API
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上的热键事件就可以了。
从Table里得到数据显然不是什么困难的事情。
关键是怎么存进Excel里。
JXL和POI是常用的,我比较习惯用JXL。