Skip to content

Commit 105ad93

Browse files
victoriacarolahuthomas
authored andcommitted
[26199] csv excel adjustment (#315)
1 parent ebeba34 commit 105ad93

File tree

2 files changed

+43
-28
lines changed

2 files changed

+43
-28
lines changed

bundles/ch.unibe.iam.scg.archie/src/ch/unibe/iam/scg/archie/export/CSVWriter.java

Lines changed: 11 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -13,8 +13,9 @@
1313

1414
import org.apache.commons.lang3.StringUtils;
1515
import java.io.File;
16-
import java.io.FileWriter;
16+
import java.io.FileOutputStream;
1717
import java.io.IOException;
18+
import java.io.OutputStreamWriter;
1819
import java.text.SimpleDateFormat;
1920
import java.util.Calendar;
2021
import java.util.List;
@@ -52,7 +53,8 @@ public class CSVWriter {
5253
*/
5354
public static File writeFile(final AbstractDataProvider provider, final String fileName) throws IOException {
5455
File file = new File(fileName);
55-
FileWriter writer = new FileWriter(file);
56+
FileOutputStream fos = new FileOutputStream(file);
57+
OutputStreamWriter writer = new OutputStreamWriter(fos, "ISO-8859-1");
5658

5759
// retrieve DataSet
5860
DataSet data = provider.getDataSet();
@@ -79,7 +81,7 @@ public static File writeFile(final AbstractDataProvider provider, final String f
7981
* @param headings List of column headings to write.
8082
* @throws IOException
8183
*/
82-
private static void writeColumnHeadings(FileWriter writer, List<String> headings) throws IOException {
84+
private static void writeColumnHeadings(OutputStreamWriter writer, List<String> headings) throws IOException {
8385
// write column headings
8486
Object[] objects = headings.toArray();
8587
CSVWriter.writeRow(writer, objects);
@@ -94,25 +96,20 @@ private static void writeColumnHeadings(FileWriter writer, List<String> headings
9496
* @param provider A data provider.
9597
* @throws IOException
9698
*/
97-
private static void writeProviderInformation(FileWriter writer, final AbstractDataProvider provider)
99+
private static void writeProviderInformation(OutputStreamWriter writer, final AbstractDataProvider provider)
98100
throws IOException {
99101
SimpleDateFormat dateFormat = new SimpleDateFormat(DateWidget.VALID_DATE_FORMAT);
100102

101103
// provider title
102-
writer.write(provider.getName());
103-
writer.write(StringUtils.LF);
104-
writer.write(dateFormat.format(Calendar.getInstance().getTime()));
105-
writer.write(StringUtils.LF);
106-
writer.write(StringUtils.LF);
104+
writer.write(provider.getName() + StringUtils.LF);
105+
writer.write(dateFormat.format(Calendar.getInstance().getTime()) + StringUtils.LF + StringUtils.LF);
107106

108107
// write parameters
109108
Map<String, Object> getters = ProviderHelper.getGetterMap(provider, true);
110109
for (Object name : getters.keySet().toArray()) {
111-
writer.write(name + " = " + getters.get(name)); //$NON-NLS-1$
112-
writer.write(StringUtils.LF);
110+
writer.write(name + " = " + getters.get(name) + StringUtils.LF); //$NON-NLS-1$
113111
}
114-
writer.write(StringUtils.LF);
115-
writer.write(StringUtils.LF);
112+
writer.write(StringUtils.LF + StringUtils.LF);
116113
}
117114

118115
/**
@@ -122,7 +119,7 @@ private static void writeProviderInformation(FileWriter writer, final AbstractDa
122119
* @param objects An array of objects containing the data to write.
123120
* @throws IOException
124121
*/
125-
private static void writeRow(FileWriter writer, Object[] objects) throws IOException {
122+
private static void writeRow(OutputStreamWriter writer, Object[] objects) throws IOException {
126123
StringBuffer buf = new StringBuffer();
127124
for (Object obj : objects) {
128125
buf.append(obj != null ? obj.toString() : StringUtils.EMPTY);

bundles/waelti.statistics/src/waelti/statistics/export/CSVWriter.java

Lines changed: 32 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,13 @@
11
package waelti.statistics.export;
22

3-
import org.apache.commons.lang3.StringUtils;
43
import java.io.File;
5-
import java.io.FileWriter;
4+
import java.io.FileOutputStream;
65
import java.io.IOException;
6+
import java.io.OutputStreamWriter;
77
import java.util.List;
8+
import java.util.Locale;
89

10+
import ch.rgw.tools.Money;
911
import waelti.statistics.queries.AbstractQuery;
1012
import waelti.statistics.queries.ResultMatrix;
1113

@@ -30,32 +32,48 @@ public static File write(AbstractQuery query, File file) throws IOException {
3032

3133
public static File writer(ResultMatrix matrix, File file) throws IOException {
3234

33-
FileWriter writer = new FileWriter(file);
35+
FileOutputStream fos = new FileOutputStream(file);
36+
OutputStreamWriter osw = new OutputStreamWriter(fos, "ISO-8859-1");
3437

35-
CSVWriter.writeHeading(writer, matrix.getHeadings());
38+
try {
39+
CSVWriter.writeHeading(osw, matrix.getHeadings());
3640

37-
for (Object[] objects : matrix) {
38-
CSVWriter.writeRow(writer, objects);
41+
for (Object[] objects : matrix) {
42+
CSVWriter.writeRow(osw, objects);
43+
}
44+
} catch (Exception e) {
45+
e.printStackTrace();
46+
} finally {
47+
osw.close();
3948
}
4049

41-
writer.close();
4250
return file;
4351
}
4452

45-
private static void writeHeading(FileWriter writer, List<String> headings) throws IOException {
53+
private static void writeHeading(OutputStreamWriter writer, List<String> headings) throws IOException {
4654
Object[] objects = headings.toArray();
4755
CSVWriter.writeRow(writer, objects);
4856
}
4957

50-
private static void writeRow(FileWriter writer, Object[] objects) throws IOException {
51-
StringBuffer buf = new StringBuffer();
58+
private static void writeRow(OutputStreamWriter writer, Object[] objects) throws IOException {
59+
StringBuilder buf = new StringBuilder();
5260
for (Object obj : objects) {
53-
buf.append(obj.toString());
61+
// Überprüfung, ob der Wert eine Zahl ist
62+
if (obj instanceof Number) {
63+
if (obj instanceof Money) {
64+
buf.append(obj.toString()); // Kommas durch Punkte ersetzen
65+
66+
} else {
67+
buf.append(String.format(Locale.US, "%.2f", obj)); // Dezimalzahlen mit Punkt statt Komma
68+
}
69+
} else {
70+
buf.append(obj.toString()); // Kommas durch Punkte ersetzen
71+
}
5472
buf.append(CSVWriter.delimiter);
5573
}
56-
buf.deleteCharAt(buf.length() - 1); // last delimiter not needed
57-
buf.append(StringUtils.LF);
74+
75+
buf.deleteCharAt(buf.length() - 1); // letztes Trennzeichen nicht benötigt
76+
buf.append(System.lineSeparator());
5877
writer.write(buf.toString());
5978
}
60-
6179
}

0 commit comments

Comments
 (0)