From: <de...@us...> - 2014-01-10 21:56:51
|
Revision: 8565 http://sourceforge.net/p/fudaa/svn/8565 Author: deniger Date: 2014-01-10 21:56:47 +0000 (Fri, 10 Jan 2014) Log Message: ----------- CRUE-619 Modified Paths: -------------- trunk/framework/ctulu-common/pom.xml trunk/framework/ctulu-common/src/main/java/org/fudaa/ctulu/table/CtuluTableExcelWriter.java trunk/framework/ctulu-common/src/main/resources/org/fudaa/ctulu/ctulu_en.fr_txt trunk/framework/ctulu-ui/src/main/java/org/fudaa/ctulu/gui/CtuluFileChooserCsvExcel.java trunk/framework/ctulu-ui/src/main/java/org/fudaa/ctulu/gui/CtuluFileChooserWriter.java trunk/framework/ctulu-ui/src/main/java/org/fudaa/ctulu/gui/CtuluTableExportPanel.java trunk/framework/ctulu-ui/src/main/java/org/fudaa/ctulu/gui/CtuluTableSimpleExporter.java trunk/framework/pom.xml Added Paths: ----------- trunk/framework/ctulu-common/src/main/java/org/fudaa/ctulu/table/CtuluTableXlsxWriter.java Modified: trunk/framework/ctulu-common/pom.xml =================================================================== --- trunk/framework/ctulu-common/pom.xml 2014-01-10 17:38:27 UTC (rev 8564) +++ trunk/framework/ctulu-common/pom.xml 2014-01-10 21:56:47 UTC (rev 8565) @@ -55,6 +55,10 @@ <artifactId>db4o-java5</artifactId> </dependency> <dependency> + <groupId>org.apache.poi</groupId> + <artifactId>poi-ooxml</artifactId> + </dependency> + <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <scope>test</scope> Modified: trunk/framework/ctulu-common/src/main/java/org/fudaa/ctulu/table/CtuluTableExcelWriter.java =================================================================== --- trunk/framework/ctulu-common/src/main/java/org/fudaa/ctulu/table/CtuluTableExcelWriter.java 2014-01-10 17:38:27 UTC (rev 8564) +++ trunk/framework/ctulu-common/src/main/java/org/fudaa/ctulu/table/CtuluTableExcelWriter.java 2014-01-10 21:56:47 UTC (rev 8565) @@ -9,8 +9,6 @@ import java.io.File; import java.io.IOException; -import java.util.ArrayList; -import java.util.List; import jxl.Workbook; import jxl.write.Label; @@ -70,8 +68,6 @@ WritableSheet currentSheet = classeur.createSheet(CtuluResource.CTULU.getString("Feuille {0}", CtuluLibString .getString(sheet + 1)), sheet); - final List sheets = new ArrayList(); - sheets.add(currentSheet); for (int i = 0; i < table_.getMaxCol(); i++) { currentSheet.addCell(new Label(col, 0, table_.getColumnName(i))); for (int row = 0; row < table_.getMaxRow(); row++) { @@ -85,7 +81,6 @@ sheet++; currentSheet = classeur.createSheet(CtuluResource.CTULU.getString("Feuille {0}", CtuluLibString .getString(sheet + 1)), sheet); - sheets.add(currentSheet); col = 0; } up.majAvancement(); @@ -102,7 +97,7 @@ } - BuFileFilter ftXsl_ = new BuFileFilter(new String[] { "xls" }, CtuluResource.CTULU.getString("Fichier excel")); + BuFileFilter ftXsl_ = new BuFileFilter(new String[]{"xls"}, CtuluResource.CTULU.getString("Fichier Excel 97-2003")); @Override public BuFileFilter getFilter() { Copied: trunk/framework/ctulu-common/src/main/java/org/fudaa/ctulu/table/CtuluTableXlsxWriter.java (from rev 8421, trunk/framework/ctulu-common/src/main/java/org/fudaa/ctulu/table/CtuluTableExcelWriter.java) =================================================================== --- trunk/framework/ctulu-common/src/main/java/org/fudaa/ctulu/table/CtuluTableXlsxWriter.java (rev 0) +++ trunk/framework/ctulu-common/src/main/java/org/fudaa/ctulu/table/CtuluTableXlsxWriter.java 2014-01-10 21:56:47 UTC (rev 8565) @@ -0,0 +1,149 @@ +/** + * @creation 11 f\xE9vr. 2005 + * @modification $Date: 2007-04-16 16:33:53 $ + * @license GNU General Public License 2 + * @copyright (c)1998-2001 CETMEF 2 bd Gambetta F-60231 Compiegne + * @mail fud...@li... + */ +package org.fudaa.ctulu.table; + +import java.io.File; +import java.io.IOException; + +import com.memoire.bu.BuFileFilter; +import java.io.FileOutputStream; +import java.util.Date; +import java.util.logging.Level; +import java.util.logging.Logger; +import org.apache.poi.ss.usermodel.Cell; +import org.apache.poi.ss.usermodel.Row; +import org.apache.poi.ss.usermodel.Sheet; +import org.apache.poi.ss.usermodel.Workbook; +import org.apache.poi.xssf.usermodel.XSSFWorkbook; +import org.fudaa.ctulu.CtuluLibFile; + +import org.fudaa.ctulu.CtuluLibString; +import org.fudaa.ctulu.CtuluResource; +import org.fudaa.ctulu.ProgressionInterface; +import org.fudaa.ctulu.ProgressionUpdater; + +/** + * @author Fred Deniger + * @version $Id: CtuluTableExcelWriter.java,v 1.7 2007-04-16 16:33:53 deniger Exp $ + */ +public class CtuluTableXlsxWriter implements CtuluWriter { + + CtuluTableModelInterface table_; + + File dest_; + + /** + * @param _table la table a ecrire + * @param _dest le fichier de destination + */ + public CtuluTableXlsxWriter(final CtuluTableModelInterface _table, final File _dest) { + super(); + table_ = _table; + dest_ = _dest; + } + + public CtuluTableXlsxWriter() { + super(); + } + + /** + * @param _p le receveur de l'avancement + */ + @Override + public void write(final ProgressionInterface _p) { + Workbook wb = new XSSFWorkbook(); + try { + // le max de colonne autorisee + final int max = 16384; + // + final ProgressionUpdater up = new ProgressionUpdater(_p); + int col = 0; + int sheet = 0; + up.setValue(3, table_.getMaxCol(), 0, 60); + Sheet currentSheet = wb.createSheet(CtuluResource.CTULU.getString("Feuille {0}", CtuluLibString + .getString(sheet + 1))); + Row row = currentSheet.createRow(0); + for (int i = 0; i < table_.getMaxCol(); i++) { + row.createCell(i).setCellValue(table_.getColumnName(i)); + } + for (int rowIdx = 0; rowIdx < table_.getMaxRow(); rowIdx++) { + row = currentSheet.createRow(rowIdx + 1); + for (int i = 0; i < table_.getMaxCol(); i++) { + Cell createCell = row.createCell(i); + Object value = table_.getValue(rowIdx, i); + if (value != null) { + Class dataClass = value.getClass(); + if (Number.class.isAssignableFrom(dataClass)) { + createCell.setCellValue(((Number) value).doubleValue()); + } else if (Date.class.equals(dataClass)) { + createCell.setCellValue(((Date) value)); + } else { + createCell.setCellValue(value.toString()); + } + } + } + col++; + if (col > max) { + currentSheet = wb.createSheet(CtuluResource.CTULU.getString("Feuille {0}", CtuluLibString + .getString(sheet + 1))); + col = 0; + } + up.majAvancement(); + } + if (_p != null) { + _p.setProgression(80); + } + writeToFile(wb); + } finally { + } + + } + + protected void writeToFile(Workbook wb) { + FileOutputStream fileOut = null; + try { + fileOut = new FileOutputStream(dest_); + wb.write(fileOut); + fileOut.close(); + } catch (IOException ex) { + Logger.getLogger(CtuluTableXlsxWriter.class.getName()).log(Level.SEVERE, null, ex); + } finally { + CtuluLibFile.close(fileOut); + } + } + + BuFileFilter ftXsl_ = new BuFileFilter(new String[]{"xlsx"}, CtuluResource.CTULU.getString("Fichier Excel")); + + @Override + public BuFileFilter getFilter() { + return ftXsl_; + } + + @Override + public void setFile(File f) { + dest_ = f; + } + + @Override + public void setModel(CtuluTableModelInterface _model) { + table_ = _model; + } + + String extension_ = ".xlsx"; + + @Override + public String getMostPopularExtension() { + return extension_; + } + + @Override + public boolean allowFormatData() { + return true; + } + +} Modified: trunk/framework/ctulu-common/src/main/resources/org/fudaa/ctulu/ctulu_en.fr_txt =================================================================== --- trunk/framework/ctulu-common/src/main/resources/org/fudaa/ctulu/ctulu_en.fr_txt 2014-01-10 17:38:27 UTC (rev 8564) +++ trunk/framework/ctulu-common/src/main/resources/org/fudaa/ctulu/ctulu_en.fr_txt 2014-01-10 21:56:47 UTC (rev 8565) @@ -108,7 +108,8 @@ Fen\xEAtres=Frames Fermer le projet=Close current project Fichier cible non d\xE9fini=Target file is not set -Fichier excel=Excel file +Fichier Excel=Excel file +Fichier Excel 97-2003=Excel 97-2003 file Fichier non trouv\xE9=File not found Fichiers=Files Filtre strict=Strict filter Modified: trunk/framework/ctulu-ui/src/main/java/org/fudaa/ctulu/gui/CtuluFileChooserCsvExcel.java =================================================================== --- trunk/framework/ctulu-ui/src/main/java/org/fudaa/ctulu/gui/CtuluFileChooserCsvExcel.java 2014-01-10 17:38:27 UTC (rev 8564) +++ trunk/framework/ctulu-ui/src/main/java/org/fudaa/ctulu/gui/CtuluFileChooserCsvExcel.java 2014-01-10 21:56:47 UTC (rev 8565) @@ -12,6 +12,7 @@ import java.awt.Component; import java.io.File; import javax.swing.JFileChooser; +import javax.swing.filechooser.FileFilter; import org.fudaa.ctulu.CtuluLib; import org.fudaa.ctulu.CtuluResource; import org.fudaa.ctulu.CtuluUI; @@ -21,22 +22,33 @@ * @version $Id: CtuluFileChooserCsvExcel.java,v 1.6 2007-06-14 11:58:18 deniger Exp $ */ public class CtuluFileChooserCsvExcel extends CtuluFileChooser { - + + public enum TypeChoosen { + + CSV, + XLS, + XLSX; + } + final BuFileFilter ftCsv_; final BuFileFilter ftXsl_; + final BuFileFilter ftXslx_; final Component parentComponent; - + public CtuluFileChooserCsvExcel(CtuluUI _ui) { this(_ui == null ? null : _ui.getParentComponent()); } - + public CtuluFileChooserCsvExcel(Component parentComponent) { this.parentComponent = parentComponent; ftCsv_ = new BuFileFilter(new String[]{"txt", "csv"}, CtuluResource.CTULU.getString("Texte CSV")); ftCsv_.setExtensionListInDescription(true); - ftXsl_ = new BuFileFilter(new String[]{"xls"}, CtuluResource.CTULU.getString("Fichier excel")); + ftXsl_ = new BuFileFilter(new String[]{"xls"}, CtuluResource.CTULU.getString("Fichier Excel 97-2003")); ftXsl_.setExtensionListInDescription(true); + ftXslx_ = new BuFileFilter(new String[]{"xlsx"}, CtuluResource.CTULU.getString("Fichier Excel")); + ftXslx_.setExtensionListInDescription(true); addChoosableFileFilter(ftXsl_); + addChoosableFileFilter(ftXslx_); addChoosableFileFilter(ftCsv_); setAcceptAllFileFilterUsed(false); setMultiSelectionEnabled(false); @@ -51,10 +63,17 @@ /** * @return true si le format excel est choisi */ - public boolean isExcelChoosen() { - return getFileFilter() == ftXsl_; + public TypeChoosen getTypeChoosen() { + FileFilter fileFilter = getFileFilter(); + if (fileFilter == ftXsl_) { + return TypeChoosen.XLS; + } + if (fileFilter == ftXslx_) { + return TypeChoosen.XLSX; + } + return TypeChoosen.CSV; } - + public File getDestFile() { final int res = showDialog(parentComponent, BuResource.BU.getString("Continuer")); if (res != JFileChooser.APPROVE_OPTION) { @@ -63,7 +82,7 @@ File f = getSelectedFile(); return completeExtension(f); } - + private File completeExtension(File f) { final javax.swing.filechooser.FileFilter filter = getFileFilter(); final String name = f.getName(); @@ -72,4 +91,4 @@ } return f; } -} \ No newline at end of file +} Modified: trunk/framework/ctulu-ui/src/main/java/org/fudaa/ctulu/gui/CtuluFileChooserWriter.java =================================================================== --- trunk/framework/ctulu-ui/src/main/java/org/fudaa/ctulu/gui/CtuluFileChooserWriter.java 2014-01-10 17:38:27 UTC (rev 8564) +++ trunk/framework/ctulu-ui/src/main/java/org/fudaa/ctulu/gui/CtuluFileChooserWriter.java 2014-01-10 21:56:47 UTC (rev 8565) @@ -9,34 +9,33 @@ import org.fudaa.ctulu.CtuluUI; import org.fudaa.ctulu.table.CtuluTableCsvWriter; import org.fudaa.ctulu.table.CtuluTableExcelWriter; +import org.fudaa.ctulu.table.CtuluTableXlsxWriter; import org.fudaa.ctulu.table.CtuluWriter; /** - * Chooser G\xE9n\xE9rique qui complete tous les formats en ajoutant les interfaces - * CtuluWriter appropri\xE9es. - * + * Chooser G\xE9n\xE9rique qui complete tous les formats en ajoutant les interfaces CtuluWriter appropri\xE9es. + * * @author Adrien Hadoux - * + * */ public class CtuluFileChooserWriter extends CtuluFileChooser { - - - final List<CtuluWriter> listWriter_; - final CtuluUI ui_; - + final List<CtuluWriter> listWriter_; + final CtuluUI ui_; + public CtuluFileChooserWriter(CtuluUI _ui, final List<CtuluWriter> _listWriter) { - + ui_ = _ui; - - if(_listWriter!=null) - listWriter_ = _listWriter; - else{ + + if (_listWriter != null) { + listWriter_ = _listWriter; + } else { // -- on ajoute par defaut les import export csv et excel --// - listWriter_=new ArrayList<CtuluWriter>(); + listWriter_ = new ArrayList<CtuluWriter>(); + listWriter_.add(new CtuluTableXlsxWriter()); listWriter_.add(new CtuluTableExcelWriter()); listWriter_.add(new CtuluTableCsvWriter()); - } + } for (CtuluWriter writer : listWriter_) { writer.getFilter().setExtensionListInDescription(true); addChoosableFileFilter(writer.getFilter()); @@ -46,19 +45,20 @@ CtuluFileChooserTestWritable tester = new CtuluFileChooserTestWritable(_ui); tester.setAppendExtension(true, null); setTester(tester); - - + } - + /** * retourne le writter selectionn\xE9 - * + * * @return */ public CtuluWriter getSelectedWriter() { - for (CtuluWriter writer : listWriter_) - if (writer.getFilter() == getFileFilter()) + for (CtuluWriter writer : listWriter_) { + if (writer.getFilter() == getFileFilter()) { return writer; + } + } return null; } @@ -69,15 +69,15 @@ } File f = getSelectedFile(); - - return completeExtension(f); } - + private File completeExtension(File f) { - if(f==null) return null; + if (f == null) { + return null; + } f = new File(f.getAbsolutePath() + getSelectedWriter().getMostPopularExtension()); return f; - } - + } + } Modified: trunk/framework/ctulu-ui/src/main/java/org/fudaa/ctulu/gui/CtuluTableExportPanel.java =================================================================== --- trunk/framework/ctulu-ui/src/main/java/org/fudaa/ctulu/gui/CtuluTableExportPanel.java 2014-01-10 17:38:27 UTC (rev 8564) +++ trunk/framework/ctulu-ui/src/main/java/org/fudaa/ctulu/gui/CtuluTableExportPanel.java 2014-01-10 21:56:47 UTC (rev 8565) @@ -36,10 +36,12 @@ import org.fudaa.ctulu.CtuluResource; import org.fudaa.ctulu.CtuluTaskDelegate; import org.fudaa.ctulu.CtuluUI; +import org.fudaa.ctulu.gui.CtuluFileChooserCsvExcel.TypeChoosen; import org.fudaa.ctulu.table.CtuluTableCsvWriter; import org.fudaa.ctulu.table.CtuluTableExcelWriter; import org.fudaa.ctulu.table.CtuluTableModelDefault; import org.fudaa.ctulu.table.CtuluTableModelInterface; +import org.fudaa.ctulu.table.CtuluTableXlsxWriter; import org.jdesktop.swingx.JXTreeTable; /** @@ -52,25 +54,25 @@ JList cbModel_; BuRadioButton cbOnlySelected_; File dest_; - boolean xlsFormat_; + TypeChoosen choosenType_; final JTable table_; final CtuluUI ui_; JDialog parentDial_; char separator = '\t'; - public static void showExportDialog(final char separator, final JTable _table, final File _dest, final boolean _xsl, + public static void showExportDialog(final char separator, final JTable _table, final File _dest, final TypeChoosen type, final CtuluUI _ui) { - showExportDialog(separator, _table, _dest, _xsl, _ui, CtuluLibSwing.getFrameAncestor(_ui.getParentComponent())); + showExportDialog(separator, _table, _dest, type, _ui, CtuluLibSwing.getFrameAncestor(_ui.getParentComponent())); } - public static void showExportDialog(final JTable _table, final File _dest, final boolean _xsl, final CtuluUI _ui, + public static void showExportDialog(final JTable _table, final File _dest, final TypeChoosen type, final CtuluUI _ui, final Window windowParent) { - showExportDialog('\t', _table, _dest, _xsl, _ui, windowParent); + showExportDialog('\t', _table, _dest, type, _ui, windowParent); } - public static void showExportDialog(final char separator, final JTable _table, final File _dest, final boolean _xsl, + public static void showExportDialog(final char separator, final JTable _table, final File _dest, final TypeChoosen type, final CtuluUI _ui, final Window windowParent) { - final CtuluTableExportPanel pn = new CtuluTableExportPanel(_table, _dest, _xsl, _ui); + final CtuluTableExportPanel pn = new CtuluTableExportPanel(_table, _dest, type, _ui); pn.separator = separator; final CtuluDialog dial = CtuluDialogPanel.createDialog(windowParent, pn); pn.setParentDial(dial); @@ -87,7 +89,7 @@ if (f == null) { return; } - CtuluTableExportPanel.showExportDialog(separator, _t, f, choose.isExcelChoosen(), _ui); + CtuluTableExportPanel.showExportDialog(separator, _t, f, choose.getTypeChoosen(), _ui); } public static void doExport(char separator, final JTable _t, final CtuluUI _ui) { @@ -99,13 +101,13 @@ } @SuppressWarnings("serial") - private CtuluTableExportPanel(final JTable _table, final File _dest, final boolean _xsl, final CtuluUI _ui) { + private CtuluTableExportPanel(final JTable _table, final File _dest, final TypeChoosen type, final CtuluUI _ui) { super(false); setLayout(new BuBorderLayout(5, 5)); table_ = _table; dest_ = _dest; ui_ = _ui; - xlsFormat_ = _xsl; + choosenType_ = type; cbModel_ = new BuList(); cbModel_.setModel(new AbstractListModel() { @Override @@ -194,9 +196,12 @@ public void run() { final CtuluTableModelInterface m = createDefaultModele(colToWrite, rowToWrite); try { - if (xlsFormat_) { + if (TypeChoosen.XLS.equals(choosenType_)) { final CtuluTableExcelWriter w = new CtuluTableExcelWriter(m, dest_); w.write(task.getStateReceiver()); + } else if (TypeChoosen.XLSX.equals(choosenType_)) { + final CtuluTableXlsxWriter w = new CtuluTableXlsxWriter(m, dest_); + w.write(task.getStateReceiver()); } else { int nbDigits = BuPreferences.BU.getIntegerProperty(CtuluTablePreferencesComponent.COORDS_EXPORT_NB_DIGITS, -1); DecimalFormat fmt; @@ -245,4 +250,4 @@ public void setParentDial(final JDialog _parentDial) { parentDial_ = _parentDial; } -} \ No newline at end of file +} Modified: trunk/framework/ctulu-ui/src/main/java/org/fudaa/ctulu/gui/CtuluTableSimpleExporter.java =================================================================== --- trunk/framework/ctulu-ui/src/main/java/org/fudaa/ctulu/gui/CtuluTableSimpleExporter.java 2014-01-10 17:38:27 UTC (rev 8564) +++ trunk/framework/ctulu-ui/src/main/java/org/fudaa/ctulu/gui/CtuluTableSimpleExporter.java 2014-01-10 21:56:47 UTC (rev 8565) @@ -19,9 +19,11 @@ import org.fudaa.ctulu.CtuluLib; import org.fudaa.ctulu.CtuluTaskDelegate; import org.fudaa.ctulu.CtuluUI; +import org.fudaa.ctulu.gui.CtuluFileChooserCsvExcel.TypeChoosen; import org.fudaa.ctulu.table.CtuluTableCsvWriter; import org.fudaa.ctulu.table.CtuluTableExcelWriter; import org.fudaa.ctulu.table.CtuluTableModelInterface; +import org.fudaa.ctulu.table.CtuluTableXlsxWriter; /** * @author DENIGER @@ -31,12 +33,13 @@ private static final char DEFAULT_SEPARATOR = '\t'; File dest_; - boolean xlsFormat_; + CtuluFileChooserCsvExcel.TypeChoosen typeChoosen; final CtuluUI ui_; char separator = '\t'; private CtuluTableModelInterface model; - public static void showExportDialog(final char separator, final CtuluTableModelInterface _table, final File _dest, final boolean _xsl, + public static void showExportDialog(final char separator, final CtuluTableModelInterface _table, final File _dest, + final CtuluFileChooserCsvExcel.TypeChoosen _xsl, final CtuluUI _ui) { final CtuluTableSimpleExporter pn = new CtuluTableSimpleExporter(_dest, _xsl, _ui, _table); pn.separator = separator; @@ -53,7 +56,7 @@ if (f == null) { return; } - CtuluTableSimpleExporter.showExportDialog(separator, _t, f, choose.isExcelChoosen(), _ui); + CtuluTableSimpleExporter.showExportDialog(separator, _t, f, choose.getTypeChoosen(), _ui); } public static void doExport(char separator, final CtuluTableModelInterface _t, final CtuluUI _ui) { @@ -64,9 +67,9 @@ doExport('\t', _t, _ui, CtuluLibSwing.getFrameAncestor(_ui.getParentComponent())); } - public CtuluTableSimpleExporter(File dest_, boolean xlsFormat_, CtuluUI ui_, CtuluTableModelInterface model) { + public CtuluTableSimpleExporter(File dest_, CtuluFileChooserCsvExcel.TypeChoosen _typeChoosen, CtuluUI ui_, CtuluTableModelInterface model) { this.dest_ = dest_; - this.xlsFormat_ = xlsFormat_; + this.typeChoosen = _typeChoosen; this.ui_ = ui_; this.model = model; } @@ -79,7 +82,10 @@ public void run() { final CtuluTableModelInterface m = model; try { - if (xlsFormat_) { + if (TypeChoosen.XLSX.equals(typeChoosen)) { + final CtuluTableXlsxWriter w = new CtuluTableXlsxWriter(m, dest_); + w.write(task.getStateReceiver()); + } else if (TypeChoosen.XLS.equals(typeChoosen)) { final CtuluTableExcelWriter w = new CtuluTableExcelWriter(m, dest_); w.write(task.getStateReceiver()); } else { @@ -102,6 +108,5 @@ } }); - } -} \ No newline at end of file +} Modified: trunk/framework/pom.xml =================================================================== --- trunk/framework/pom.xml 2014-01-10 17:38:27 UTC (rev 8564) +++ trunk/framework/pom.xml 2014-01-10 21:56:47 UTC (rev 8565) @@ -206,6 +206,11 @@ <version>1.0</version> </dependency> <dependency> + <groupId>org.apache.poi</groupId> + <artifactId>poi-ooxml</artifactId> + <version>3.9</version> + </dependency> + <dependency> <groupId>net.sourceforge.jexcelapi</groupId> <artifactId>jxl</artifactId> <version>2.6.3</version> This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |