Home › Forum › Nuclos Bedienung › Datenimport/export › Export ohne Kopfzeile?
- Dieses Thema hat 1 Antwort und 2 Teilnehmer, und wurde zuletzt aktualisiert vor 9 Jahre, 11 Monaten von
Ramin Goettlich.
-
AutorBeiträge
-
19 Juni 2013 um 16:08 Uhr #6735
Thorsten Kreutz
TeilnehmerHallo 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ß,
jproxx19 Juni 2013 um 16:18 Uhr #6736Ramin Goettlich
TeilnehmerDas 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());
}
}
}
-
AutorBeiträge