62,567
社区成员




import java.awt.*;
import java.awt.event.*;
import java.io.*;
import javax.swing.*;
import javax.swing.table.*;
public class ExcelExporter {
//public ExcelExporter() { }
public void exportTable(JTable table, File file) throws IOException {
TableModel model = table.getModel();
FileWriter out = new FileWriter(file);
//写入table
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++) {
out.write(model.getValueAt(i,j).toString()+"\t");
}
out.write("\n");
}
out.close();
System.out.println("write out to: " + file);
}
public static void main(String[] args) {
String[][] data = {
{ "Housewares", "1275.00" },
{ "Pets", "125.00" },
{ "Electronics", "2533.00" },
{ "Mensware", "497.00" }
};
String[] headers = { "Department", "Daily Revenue" };
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);
JButton export = new JButton("Export");
export.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent evt) {
int i=0;
try {
ExcelExporter exp = new ExcelExporter();
exp.exportTable(table,table1, new File( "C:\\results"+i+".xls"));
//生成EXCEL后打开
String addr = "C:\\results"+i+".xls";
Runtime.getRuntime().exec( "cmd /c start "+addr);
i++;
} catch (IOException ex) {
System.out.println(ex.getMessage());
ex.printStackTrace();
}
}
});
frame.getContentPane().add("Center",scroll);
frame.getContentPane().add("South",export);
frame.pack();
frame.setVisible(true);
}
}
public static String toUtf8String(String s){
StringBuffer sb = new StringBuffer();
for ( int i = 0 ;i < s.length();i ++ ){
char c = s.charAt(i);
if (c >= 0 && c <= 255 ){sb.append(c);}
else {
byte [] b;
try { b = Character.toString(c).getBytes("ansi");}
catch (Exception ex) {
System.out.println(ex);
b = new byte [ 0 ];
}
for ( int j = 0 ; j < b.length; j ++ ) {
int k = b[j];
if (k < 0 ) k += 256 ;
sb.append("%"+ Integer.toHexString(k).toUpperCase());
}
}
}
return sb.toString();
}