2017-12-14 10 views
0

Ich verwende Apache POI, um wenige Berichte in Excel zu rendern. Meine Anforderungen sind,Wie erzwingen Excel, um Werte in Spanisch Gebietsschema mit Apache POI anzuzeigen

  1. Zeigen Sie die Daten im spanischen Format an, der Zelltyp in Excel sollte Datum sein.
  2. Zeigen Sie den Dezimalbetrag/Preis/Währungswert im spanischen Format an (zB: 12,23 oder 1,454,23), der Zelltyp in Excel sollte die Nummer sein, obwohl er ',' im Wert hat und in der Lage sein sollte Wende die Zahlenfunktionen auf diese Zellen an.

Wenn ich versuche, die Werte mit dem folgenden Code mit dem spanischen locale im System einstellen, zeigt

CellStyle style = workBook.createCellStyle();     
style.setDataFormat(workBook.createDataFormat().getFormat("##0.00%")); 
cell.setCellStyle(style); 
cell.setCellValue(new Double(23.45).doubleValue()); 

es den Wert als 23,45% (nicht das Systemgebietsschema zu respektieren) und ermöglicht es, die Anzahl Funktionen. Um es zu beheben, wenn ich das Format zu "## 0,00" ändere, dann werden die Werte nicht richtig angezeigt und es betrachtet die Zelle nicht als eine Zahlenspalte, daher funktionieren die Zahlenfunktionen nicht. Also muss ich es entweder in Text umwandeln und den Wert setzen (wo ich die Fähigkeit verlieren werde, die Zahlenfunktionen in den Zellen zu benutzen) oder das '.' Format, um die Nummer anzuzeigen (was nicht die Voraussetzung ist).

Fragen:

  • Wie kann ich die spanische Format Nummer/Währung festgelegt und immer noch den Zelltyp, die Anzahl Funktionen (auch mit ‚‘ in den Zahlen) annehmen machen?
  • Gibt es eine Möglichkeit, dieses Format in einer Zelle zu erzwingen, ohne den Wert als Text festzulegen?
  • Gibt es eine Möglichkeit, das Gebietsschema der Excel-Datei auf das spanische Gebietsschema zu zwingen, so dass dort, wo es geöffnet ist, die Werte im spanischen Format angezeigt werden?
  • Mit dem obigen Code, generierte ich die Excel-Datei mit dem Standardformat (## 0.00) und erwartet, dass es das Format ändern (zu ## 0,00), wenn das Gebietsschema des Systems geändert wird, aber es nicht.

Jede Hilfe würde sehr geschätzt werden. Vielen Dank.

+0

Was passiert, wenn Sie tun, was Sie in Excel zu tun haben würden, die gleiche Sache zu zwingen, und die spanischen locale zu Beginn Ihres Format String angeben? – Gagravarr

+0

Wenn in der Windows-Systemeinstellung Komma als Dezimaltrennzeichen gesetzt ist und Excel dies nicht verwendet, sondern den Punkt verwendet, dann kann der einzige Grund dafür sein, dass [Optionen - Erweiterte Bearbeitungsoptionen - Systemtrennzeichen verwenden] (https: // support.office.com/en-us/article/Change-the-character-used-to-separate-housands-or-decimals-c093b545-71cb-4903-b205-aebb9837bd1e) Check-Box ist deaktiviert und Punkt ist explizit festgelegt dort als Dezimaltrennzeichen. –

+0

@Gagravarr Die Zahl wird wie erwartet angezeigt. – KingKari

Antwort

0

Der genannte Code funktioniert einwandfrei. Das Problem war, dass es nicht ausreichte, nur das Gebietsschema des Systems zu ändern, sondern auch die Anzahl und das Datumsformat des Systems. Sobald das geändert wurde, funktioniert es gut. Getestet wurde es auch in verschiedenen Locale-Maschinen.

Dank

Verwandte Themen