import java.awt.event.ActionEvent; |
import java.awt.event.ActionListener; |
import java.io.File; |
import java.io.FileNotFoundException; |
import java.io.FileOutputStream; |
import java.io.IOException; |
import java.io.OutputStream; |
import javax.swing.JButton; |
import javax.swing.JFrame; |
import javax.swing.JOptionPane; |
import javax.swing.JScrollPane; |
import javax.swing.JTable; |
import javax.swing.table.DefaultTableModel; |
import javax.swing.table.TableModel; |
import jxl.Workbook; |
import jxl.write.WritableSheet; |
import jxl.write.WritableWorkbook; |
import jxl.write.WriteException; |
import jxl.write.biff.RowsExceededException; |
public class jxlText { |
|
//public jxlText() { |
//} |
|
public void exportTable(JTable table, File file) throws IOException { |
try { |
OutputStream out = new FileOutputStream(file); |
TableModel model = table.getModel(); |
WritableWorkbook wwb = Workbook.createWorkbook(out); |
// 创建字表,并写入数据 |
WritableSheet ws = wwb.createSheet( "中文" , 0 ); |
// 添加标题 |
for ( int i = 0 ; i < model.getColumnCount(); i++) { |
jxl.write.Label labelN = new jxl.write.Label(i, 0 , model.getColumnName(i)); |
try { |
ws.addCell(labelN); |
} catch (RowsExceededException e) { |
// TODO Auto-generated catch block |
e.printStackTrace(); |
} catch (WriteException e) { |
// TODO Auto-generated catch block |
e.printStackTrace(); |
} |
} |
// 添加列 |
for ( int i = 0 ; i < model.getColumnCount(); i++) { |
for ( int j = 1 ; j <= model.getRowCount(); j++) { |
jxl.write.Label labelN = new jxl.write.Label(i, j, model.getValueAt(j - 1 , i).toString()); |
try { |
ws.addCell(labelN); |
} catch (RowsExceededException e) { |
e.printStackTrace(); |
} catch (WriteException e) { |
e.printStackTrace(); |
} |
} |
} |
wwb.write(); |
try { |
wwb.close(); |
} catch (WriteException e) { |
e.printStackTrace(); |
} |
} catch (FileNotFoundException e) { |
JOptionPane.showMessageDialog( null , "导入数据前请关闭工作表" ); |
} |
} |
public static void main(String[] args) { |
String[][] data = { |
{ "中文" , "$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) { |
try { |
jxlText exp = new jxlText(); |
exp.exportTable(table, new File( "results.xls" )); |
} 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 ); |
} |
} |