java jtable导出txt_将JTable中的数据导出为csv/xls格式

该博客介绍了如何使用Java将JTable中的数据导出为CSV和XLS格式。通过自定义CSVFileFilter和XMLFileFilter类,实现了文件选择对话框,允许用户选择导出格式。同时,CSVFileWriter和XMLFileWriter类分别处理CSV和XLS的写入操作,将表格数据转换并保存到指定文件中。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

packagecom.test.util;importjava.awt.Component;importjava.io.File;importjava.io.FileWriter;importjava.io.IOException;importjavax.swing.JFileChooser;importjavax.swing.JOptionPane;importjavax.swing.JTable;importjavax.swing.filechooser.FileFilter;importjavax.swing.table.TableModel;importjxl.Workbook;importjxl.WorkbookSettings;importjxl.write.Label;importjxl.write.WritableCellFormat;importjxl.write.WritableFont;importjxl.write.WritableSheet;importjxl.write.WritableWorkbook;publicclassJTableExportCommand{privateJTable table=null;privateComponent parentComp=null;publicJTableExportCommand( JTable table, Component parentComp ){this.table=table;this.parentComp=parentComp;

}publicbooleanexecute(){if( table==null){returnfalse;

}

File file=showSaveDialog();if( file!=null){if( file.exists() ){if( JOptionPane.showConfirmDialog( table,"The file already exists, do you want to replace it?")!=JOptionPane.YES_OPTION ){returnfalse;

}

}if( getExtension( file ).equalsIgnoreCase("csv") ){returnCSVFileWriter.writeTableModel( table, file );

}else{returnXMLFileWriter.writeTableModel( table, file );

}

}returnfalse;

}privateFile showSaveDialog(){

JFileChooser chooser=newJFileChooser();

chooser.removeChoosableFileFilter( chooser.getAcceptAllFileFilter() );

chooser.addChoosableFileFilter(newCSVFileFilter() );

chooser.addChoosableFileFilter(newXMLFileFilter() );

chooser.setFileSelectionMode( JFileChooser.FILES_ONLY );intret=chooser.showSaveDialog( parentComp );if( ret==JFileChooser.APPROVE_OPTION ){

File f=chooser.getSelectedFile();

FileFilter filter=chooser.getFileFilter();if( filterinstanceofCSVFileFilter ){

String extension=getExtension( f );if( extension==null||!extension.equalsIgnoreCase( ( (CSVFileFilter)filter ).getExtension() ) ){returnnewFile( f.getAbsolutePath()+"."+( (CSVFileFilter)filter ).getExtension() );

}

}else{

String extension=getExtension( f );if( extension==null||!extension.equalsIgnoreCase( ( (XMLFileFilter)filter ).getExtension() ) ){returnnewFile( f.getAbsolutePath()+"."+( (XMLFileFilter)filter ).getExtension() );

}

}returnf;

}returnnull;

}staticclassCSVFileFilterextendsFileFilter{publicbooleanaccept( File f ){if( f!=null){if( f.isDirectory() ){returntrue;

}if( getExtension().equalsIgnoreCase( JTableExportCommand.getExtension( f ) ) ){returntrue;

}

}returnfalse;

}publicString getDescription(){return"csv format";

}publicString getExtension(){return"csv";

}

}staticclassCSVFileWriter{publicstaticbooleanwriteTableModel( JTable fTable, File file ){if( fTable==null){returnfalse;

}

TableModel tableModel=fTable.getModel();

StringBuffer fileBuf=newStringBuffer("");introwCount=tableModel.getRowCount();intcolumnCount=tableModel.getColumnCount();for(intcol=0; col

fileBuf.append( tableModel.getColumnName( col ) );

fileBuf.append(",");

}

fileBuf.append("\n");for(introw=0; row

fileBuf.append( tableModel.getValueAt( row, col ).toString() );if( col!=columnCount-1){

fileBuf.append(",");

}

}

fileBuf.append("\n");

}try{

FileWriter writer=newFileWriter( file );

writer.write( fileBuf.toString() );

writer.close();returntrue;

}catch(IOException e){

e.printStackTrace( System.err );returnfalse;

}

}

}staticclassXMLFileFilterextendsFileFilter{publicbooleanaccept( File f ){if( f!=null){if( f.isDirectory() ){returntrue;

}if( getExtension().equalsIgnoreCase( JTableExportCommand.getExtension( f ) ) ){returntrue;

}

}returnfalse;

}publicString getDescription(){return"xls format";

}publicString getExtension(){return"xls";

}

}staticclassXMLFileWriter{publicstaticbooleanwriteTableModel( JTable fTable, File file ){if( fTable==null){returnfalse;

}

TableModel tableModel=fTable.getModel();introwCount=tableModel.getRowCount();intcolumnCount=tableModel.getColumnCount();

WorkbookSettings ws=newWorkbookSettings();try{

WritableWorkbook workbook=Workbook.createWorkbook( file, ws );

String name=fTable.getName()!=null?fTable.getName() :"sheet1";

WritableSheet sheet=workbook.createSheet( name,0);//header format.WritableFont arial10ptBold=newWritableFont( WritableFont.ARIAL,10, WritableFont.BOLD );

WritableCellFormat headerFormat=newWritableCellFormat( arial10ptBold );//WritableCellFormat wrappedformat=newWritableCellFormat( WritableWorkbook.ARIAL_10_PT );

wrappedformat.setWrap(true);//write the table headerfor(intcol=0; col

sheet.addCell(newLabel( col,0, tableModel.getColumnName( col ), headerFormat ) );

}//write the data.for(introw=0; row

sheet.addCell(newLabel( col, row+1, tableModel.getValueAt( row, col ).toString(), wrappedformat ) );

}

}

workbook.write();

workbook.close();

}catch(Exception ioe){

ioe.printStackTrace();returnfalse;

}returntrue;

}

}publicstaticString getExtension( File f ){

String ext=null;

String s=f.getName();inti=s.lastIndexOf('.');if( i>0&&i

ext=s.substring( i+1).toLowerCase();

}returnext;

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值