السلام عليكم
هل يمكن ملء jtable بمحتوى ملف xls
و هل يمكن فعل العكس (أي حفظ محتوى jtable في ملف xls )
السلام عليكم
هل يمكن ملء jtable بمحتوى ملف xls
و هل يمكن فعل العكس (أي حفظ محتوى jtable في ملف xls )
حفظ JTable في ملف xls : والعكس :
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.io.*;
import javax.swing.table.*;
public class ExcelTest {
/**
* @param args
*/
public static void main(String[] args) {
// An array of book titles and their associated ISBN numbers
String[][] data = { { "Summerall", "0785214925" },
{ "The Secret Message of Jesus", "084990000X" },
{ "Buck Wild", "159555064X" },
{ "25 Ways to Win with People", "0785260943" },
{ "Aesop and the CEO ", "0785260102" },
{ "ALL Business is Show Business ", "0785206086" },
{ "Becoming A Person of Influence", "0785271007" },
{ "Checklist for Life for Leaders", "0785260013" },
{ "Duct Tape Marketing ", "078522100X" },
{ "38 Values to Live By ", "0849916631" },
{ "Blue Moon", "0785260641" },
{ "Blue Like Jazz ", "9780785263708" },
{ "Wild at Heart ", "0785262989" },
{ "Wild Men, Wild Alaska ", "078521772X " },
{ "The Duct Tape Bible, NCV", "0718018249" } };
String[] headers = { "Title", "ISBN" };
final JFrame frame = new JFrame("JTable to Excel Hack");
DefaultTableModel model = new DefaultTableModel(data, headers);
final JTable table = new JTable(model);
JScrollPane scroll = new JScrollPane(table);
// my JPopupMenu component
final JPopupMenu popup = new JPopupMenu();
// the save JMenuItem and its associated ActionListener
JMenuItem save = new JMenuItem("save to file");
save.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent action) {
try {
ExcelExporter exp = new ExcelExporter();
exp.exportTable(table, new File("results.xls"));
} catch (IOException ex) {
System.out.println(ex.getMessage());
ex.printStackTrace();
}
}
});
popup.add(save);
// The open JMenuItem and its associated ActionListener
JMenuItem open = new JMenuItem("open in Excel");
open.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent action) {
try {
// Note that i'm actually saving the file first
ExcelExporter exp = new ExcelExporter();
File file = new File("results1.xls");
exp.exportTable(table, file);
ExcelOpener opn = new ExcelOpener();
opn.openTable(file);
} catch (IOException ex) {
System.out.println(ex.getMessage());
ex.printStackTrace();
}
}
});
popup.add(open);
// the following method only works in JDK 5.0 or greater
// table.setComponentPopupMenu(popup);
JLabel label1 = new JLabel("Right Click to Export Data...",
JLabel.CENTER);
// the following code is needed for JDK 1.4
table.addMouseListener(new MouseAdapter() {
public void mousePressed(MouseEvent event) {
if (popup.isPopupTrigger(event)) {
popup
.show(event.getComponent(), event.getX(), event
.getY());
}
}
public void mouseReleased(MouseEvent event) {
if (popup.isPopupTrigger(event)) {
popup
.show(event.getComponent(), event.getX(), event
.getY());
}
}
});
frame.getContentPane().add("Center", scroll);
frame.getContentPane().add("South", label1);
frame.pack();
frame.setVisible(true);
}
}
class ExcelExporter {
public ExcelExporter() {
}
public void exportTable(JTable table, File file) throws IOException {
TableModel model = table.getModel();
FileWriter out = new FileWriter(file);
for (int i = 0; i < model.getColumnCount(); i++) {
out.write(model.getColumnName(i) + "\t");
}
out.write("\n");
for (int i = 0; i < model.getRowCount(); i++) {
for (int j = 0; j < model.getColumnCount(); j++) {
// I added this check for the ISBN conversion
if (j == 0) {
// the book Title
out.write(model.getValueAt(i, j).toString() + "\t");
} else {
/*
* the ISBN Number Note that I added a \" to the front of
* the string and a \t followed by a closing \" to let Excel
* know that this field is to be converted as text
*/
out.write("\"" + model.getValueAt(i, j).toString() + "\t"
+ "\"");
}
}
out.write("\n");
}
out.close();
System.out.println("write to " + file);
}
}
class ExcelOpener {
public ExcelOpener() {
}
public void openTable(File file) throws IOException {
Runtime run = Runtime.getRuntime();
// I make the assumption that the client has Excel and
// the file type .XLS is associated with Excel
// This is a simple check to find out the operating system
String lcOSName = System.getProperty("os.name").toLowerCase();
boolean MAC_OS_X = lcOSName.startsWith("mac os x");
if (MAC_OS_X) {
run.exec("open " + file);
} else {
run.exec("cmd.exe /c start " + file);
}
System.out.println(file + " opened");
}
}المصدر
http://rickproctor.blogspot.com/2006/08/ex...a-to-excel.html
تم تعديل هذه المشاركة بواسطة delab في 13 يونيو 2008 في 17:54