Home Forum Nuclos Bedienung Datenimport/export Export ohne Kopfzeile?

Ansicht von 2 Beiträgen - 1 bis 2 (von insgesamt 2)
  • Autor
    Beiträge
  • #6735
    Thorsten Kreutz
    Teilnehmer

    Hallo zusammen,

    ich möchte einen Report im CSV-Format erstellen, der keine Kopfzeile (Spaltennamen) hat. Ich habe dazu keine Funktion gefunden, ist das irgendwie möglich?

    Der Report soll eine Datei für den Import bei ProfiCash erstellen – funktioniert aber nur, wenn man vorher von Hand die Kopfzeile löscht.

    Danke & Gruß,
    jproxx

    #6736
    Ramin Goettlich
    Teilnehmer

    Das geht leider (noch) nicht, wäre ein Ticket wert.

    Alternative: Die Datei aus der Datenquelle mit einer Regel erzeugen (die z.B. an einem Button in einer Maske hängt), nach alter Regel-API (nur dafür habe ich grad ein Codebeispiel zur Hand) etwa so:


    package org.nuclet.simplefileexport;

    public class Fileexport {

    private static final String TEXTDELIMITER = "";
    private static final String COLUMNDELIMITER = ";";
    private static final String LINEFEED = "n";
    private static final String ENDING = ".txt";

    public void Fileexport() {
    }

    public void export(String sDatasource, String sPath, String sFilename) throws org.nuclos.common.PointerException {
    java.io.Writer writer = openFile(sPath, sFilename);
    org.nuclos.server.report.valueobject.ResultVO vo = getResult(sDatasource);
    boolean asterisk = false;
    String previousValue = null;
    for (Object[] obj : vo.getRows()) {
    StringBuffer sbRow = new StringBuffer();
    int counter = 0;
    for (org.nuclos.server.report.valueobject.ResultColumnVO column : vo.getColumns()) {
    StringBuffer sbColumn = new StringBuffer();
    final String sLabel = column.getColumnLabel();
    final Class clazz = column.getColumnClass();
    final Object value = obj[counter++];
    if (value != null) {
    if (clazz.equals(java.lang.Double.class)) {
    java.text.DecimalFormatSymbols decimalSymbols = new java.text.DecimalFormatSymbols();
    decimalSymbols.setDecimalSeparator(',');
    java.text.DecimalFormat decimalFormat = new java.text.DecimalFormat("#.##", decimalSymbols);
    String formattedValue = decimalFormat.format((Double)value);
    sbColumn.append(TEXTDELIMITER).append(formattedValue).append(TEXTDELIMITER);
    } else {
    sbColumn.append(TEXTDELIMITER).append((String)value).append(TEXTDELIMITER);
    }
    }
    sbColumn.append(COLUMNDELIMITER);
    sbRow.append(sbColumn);
    }
    sbRow.append(LINEFEED);
    try {
    writer.write(sbRow.toString());
    } catch (java.io.IOException e) {
    throw new org.nuclos.common.PointerException(e.getMessage());
    }
    }
    try {
    writer.close();
    } catch (java.io.IOException e) {
    throw new org.nuclos.common.PointerException(e.getMessage());
    }
    }

    private java.io.Writer openFile(String sPath, String sFilename) throws org.nuclos.common.PointerException {
    final java.io.File file = new java.io.File(sPath);
    if (!file.isDirectory()) throw new org.nuclos.common.PointerException("Der angegebene Pfad existiert nicht.");
    if (!file.canWrite()) throw new org.nuclos.common.PointerException("Auf den angegebenen Pfad kann nicht schreibend zugegriffen werden.");
    java.text.SimpleDateFormat dateFormat = new java.text.SimpleDateFormat("yyyyMMdd-HHmmss");
    StringBuffer sFullyQualifiedFilename = new StringBuffer(sPath);
    sFullyQualifiedFilename.append(java.io.File.separator);
    sFullyQualifiedFilename.append(sFilename);
    sFullyQualifiedFilename.append("_");
    sFullyQualifiedFilename.append(dateFormat.format(new java.util.Date()));
    sFullyQualifiedFilename.append(ENDING);
    try {
    return new java.io.OutputStreamWriter(new java.io.FileOutputStream(sFullyQualifiedFilename.toString()), "Cp1252"); //windows-1252
    } catch (java.io.FileNotFoundException e) {
    throw new org.nuclos.common.PointerException(e.getMessage());
    } catch (java.io.UnsupportedEncodingException e) {
    throw new org.nuclos.common.PointerException(e.getMessage());
    }
    }

    private org.nuclos.server.report.valueobject.ResultVO getResult(String sDatasource) throws org.nuclos.common.PointerException {
    final org.nuclos.server.report.ejb3.DatasourceFacadeLocal facade = org.nuclos.common2.ServiceLocator.getInstance().getFacade(org.nuclos.server.report.ejb3.DatasourceFacadeLocal.class);
    try {
    final org.nuclos.server.report.valueobject.DatasourceVO vo = facade.get(sDatasource);
    if (vo != null) {
    try {
    return facade.executeQuery(vo.getId(), new java.util.HashMap(), null);
    } catch (org.nuclos.common.querybuilder.NuclosDatasourceException e) {
    throw new org.nuclos.common.PointerException(e.getMessage());
    }
    } else {
    throw new org.nuclos.common.PointerException("Es existiert keine Datenquelle mit dem Namen "" + sDatasource + "".");
    }
    } catch (org.nuclos.common2.exception.CommonFinderException e) {
    throw new org.nuclos.common.PointerException(e.getMessage());
    } catch (org.nuclos.common2.exception.CommonPermissionException e) {
    throw new org.nuclos.common.PointerException(e.getMessage());
    }
    }
    }

Ansicht von 2 Beiträgen - 1 bis 2 (von insgesamt 2)