我々は最終的に実現XLS文書データは、表形式のデータ転送XLS文書をスイングして読んで午後を過ごしました。
コードの次
1.ポップアップファイル、ディレクトリ選択ボックス
exportBtn.addActionListener(新しいのActionListener(){ @Override 公共 空のactionPerformed(のActionEvent e)の{ 文字列名 = " 数据の.XLS " ; 文字列defaultPath = " D://一時" ; // 构造文件保存对话框 JFileChooserのチュー= 新しいですJFileChooserの(); chooser.setFileSelectionMode(JFileChooser.FILES_AND_DIRECTORIES); chooser.setDialogType(JFileChooser.SAVE_DIALOG); chooser.setMultiSelectionEnabled(偽); Chooser.setAcceptAllFileFilterUsed(偽); chooser.setDialogTitle(" データファイルを保存" ); // 設定し、デフォルトのパスの ファイルDEFAULTFILE = 新しい新しいファイル(DefaultPath + " //データ" ); IF!(DefaultFile.exists()){ DEFAULTFILE .mkdirs(); } chooser.setCurrentDirectory(新しい新しいファイル(DefaultPath)); // 開いているダイアログ int型の結果= chooser.showSaveDialog(は、GetWindow()); // ヌル // ファイルが決定 IF(結果== JFileChooser.APPROVE_OPTION){ 文字列OUTPATH = chooser.getSelectedFile()getAbsolutePath();. ファイルF = 新しい新しいファイル(OUTPATH); IF (f.isDirectory()){ OUTPATH = OUTPATH + " \ \ " + 名; } のiF(新しい新規ファイル(OUTPATH).exists()){ int型 B = DialogUtils.showYesNoOptionDialog(は、GetWindow()、" ?ファイルが既に存在する、ファイルを上書きするか否か" "操作确认" ); もし!(B = 0 ){ リターン; } } ファイルファイル = 新しいファイル(OUTPATH); ExcelExporter eeでは = 新しいExcelExporter(); してみてください{ ee.exportTable(xTable、ファイル); } キャッチ(IOExceptionをE1 ){ 新規のRuntimeException(E1); } } } });
2.フォームデータのエクスポート
パッケージnet.doublecom.sdk.tool.wirelessinfo.view。 輸入java.io. * ; 輸入org.freeabc.client.core.component.table.XTable; パブリック クラスExcelExporter { 公共ExcelExporter(){} パブリック 無効 exportTable(XTable <?> xtable、ファイルファイル)にIOException {// Xtable自定义组件、也可换成JTableのスロー
//のTableModelのTableModel =新しいJTableの()。getModelを( );
// tableModel.getColumnCount()
FileWriter アウト = 新しいてFileWriter(ファイル); 以下のために(int型 i = 0 ; iはxtable.getColumnCount()<; I ++のを){ 場合("名称 .equals(xtable.getColumnName(I))|| " 年龄" .equals(xtable.getColumnName(I))) うち。書き込み(xtable.getColumnName(I)+ " \ tの" ); } うち .WRITE(" の\ n " ); のための(int型 I = 0 ; iがxtable.getRowCountを()<; I ++){ ため(INT J = 0 ; J <xtable.getColumnCount(); J ++ ){ 場合(" 名称" .equals(xtable.getColumnName(J))|| " 年龄" .equals(xtable.getColumnName(J)) ) うち .WRITE(xtable.getValueAt(i、j)の.toString()+ " \ tの" ); } アウト .WRITE(" の\ n " ); } アウト.close(); システム。アウト .println(「への書き出し:」+ )ファイルを。 } }
3.文書データXLSを読みます
importBtn.addActionListener(新規のActionListener(){ @Override 公共 ボイドのactionPerformed(のActionEvent e)の{ 文字列defaultPath = " D:// //一時データ// " ; // 构造文件保存对话框 JFileChooserのチュー= 新しいJFileChooserの()。 chooser.setFileSelectionMode(JFileChooser.FILES_ONLY); chooser.setDialogType(JFileChooser.SAVE_DIALOG); chooser.setMultiSelectionEnabled(偽); chooser.setAcceptAllFileFilterUsed(偽)。 chooser.setDialogTitle(" ロードデータファイル" ); // 設定し、デフォルトのパスの ファイルDEFAULTFILE = 新しい新しいファイル(DefaultPath); IF (defaultFile.exists()){ chooser.setCurrentDirectory(新しい新しいファイル(DefaultPath)); } // 取得したファイル入力ボックスの設定に名前を付けることは形式指定 chooser.addChoosableFileFilter(新新のFileFilter(){ @Override 公共の文字列のgetDescription(){ リターン " Excelファイル(* .XLS)" ; } @Override 公共ブール受け入れ(ファイルF){ IF(F.getName()endsWith(。" XLS ")|| f.isDirectory()){ リターン trueに; } 他{ リターン falseに; } } }); // オープンダイアログ int型の結果= chooser.showSaveDialog(は、GetWindow()); // ヌル // ファイルを決定するために IFを(結果==JFileChooser.APPROVE_OPTION){ ストリングOUTPATH = chooser.getSelectedFile()getAbsolutePath()。 ファイルファイル = 新しいファイル(OUTPATH)。 試す{ StringBufferのSB = 新しいStringBufferを(); リストの<string []> dataArrs = 新規のArrayList <文字列[]> (); FileInputStreamのFIS = 新しいFileInputStreamを(ファイル); // 入力ストリームは= fis.getInputStream()です。 BufferedReaderのリーダー= 新しいをBufferedReader(新新 InputStreamReaderの(FIS、" 2312 ")); reader.readLine(); // 情報の最初の行に、タイトル情報、必要であれば、コメントしていない 文字列のライン= ヌル; しばらく((ライン= reader.readLine( !))= NULL ){ 文字列項目[] = line.split(" \\ T "); // XLSのファイル・スペース区切りのフォーマット、セグメンテーションコンマに従って IF!(item.length = 2 ) 続けます。 dataArrs.add(アイテム) } のために(文字列[]データ:dataArrs){ 場合(data.length> = 2 ){ sb.append("名前= " + DATA [ 0 ])。 sb.append(" 年齢= " +データ[ 1 ] + " ; " ); } } )(reader.close。 } キャッチ(のIOExceptionのE1){ 新規のRuntimeException(E1)。 } } } })。