[Calc 2.3.0 Linux] Datumsangaben beim XML-Import

26/10/2007 - 17:23 von Stefan+Usenet | Report spam
Hallo,

ich verwende OO 2.3 unter Linux (Debian etch mit selbst installiertem,
aktuellen OO). Eine von mir entwickelte Applikation erzeugt XML-Dateien
fuer MS-Excel, die sich auch mit OO oeffnen lassen. Im wesentlichen
sieht das auch gut aus, nur bei Datumsangaben gibt es ein Problem
(Beispiel auf das notwendige Minimum reduziert, sollte sich aber noch
direkt oeffnen lassen):

<?xml version="1.0"?>
<?mso-application progid="Excel.Sheet"?>
<Workbook xmlns="urn:schemas-microsoft-com:office:spreadsheet"
xmlns:x="urn:schemas-microsoft-com:office:excel"
xmlns:ss="urn:schemas-microsoft-com:office:spreadsheet"
xmlns:html="http://www.w3.org/TR/REC-html40">

<ss:Styles>
<ss:Style ss:ID="prefaceDate">
<ss:NumberFormat ss:Format="DD.MM.YYYY, hh:mm" />
</ss:Style>
</ss:Styles>
<Worksheet>
<ss:Table>
<ss:Row>
<ss:Cell ss:StyleID="prefaceDate">
<ss:Data ss:Type="DateTime">2007-10-26T15:42:42</ss:Data>
</ss:Cell>
</ss:Row>
</ss:Table>
</Worksheet>
</Workbook>

OpenOffice stellt mir in der Zelle lediglich die Uhrzeit dar - diese ist
korrekt, also muss das Format ja prinzipiell einmal in Ordnung sein. Nur
das Datum ist und bleibt verschwunden, wiewohl mir die Angabe richtig
erscheint (und MS-Excel das Datum auch darstellen kann).

Aendert man die Zellenformatierung dann in OpenOffice manuell, so
erhaelt man als Datum 12/30/1899, was vermutlich intern dem Wert "0"
entspricht. Es scheint also _weder_ der Zahlenwert aus ss:Data, _noch_
die Formatierung aus ss:NumberFormat uebernommen zu werden.

Wer weiss Rat (Aenderungen im XML sollten dabei sinnvollerweise die
Kompatibilitaet zu MS-Excel nicht zerstoeren)? Mache ich einen Fehler,
oder liegt das Problem bei OpenOffice?

Servus,
Stefan

http://kontaktinser.at/ - die kostenlose Kontaktboerse fuer Oesterreich

Stefan - Für die Tage der Wehmut: Beerben damit es tobt!
(Sloganizer)
 

Lesen sie die antworten

#1 Stefan+Usenet
26/10/2007 - 20:40 | Warnen spam
On 26 Oct 2007 15:23:06 GMT Stefan Froehlich wrote:
<?xml version="1.0"?>
<?mso-application progid="Excel.Sheet"?>
<Workbook xmlns="urn:schemas-microsoft-com:office:spreadsheet"
xmlns:x="urn:schemas-microsoft-com:office:excel"
xmlns:ss="urn:schemas-microsoft-com:office:spreadsheet"
xmlns:html="http://www.w3.org/TR/REC-html40">

<ss:Styles>
<ss:Style ss:ID="prefaceDate">
<ss:NumberFormat ss:Format="DD.MM.YYYY, hh:mm" />
</ss:Style>
</ss:Styles>
<Worksheet>
<ss:Table>
<ss:Row>
<ss:Cell ss:StyleID="prefaceDate">
<ss:Data ss:Type="DateTime">2007-10-26T15:42:42</ss:Data>
</ss:Cell>
</ss:Row>
</ss:Table>
</Worksheet>
</Workbook>

OpenOffice stellt mir in der Zelle lediglich die Uhrzeit dar [...]



In der Zwischenzeit bin ich soweit, dass ich die Datei
share/xslt/import/spreadsheetml/spreadsheetml2ooo.xsl als (vermutlichen)
Verursacher identifiziert habe. Die Datei ist fuer die Uebersetzung von
MS-XML nach OASIS zustaendig, und dort gibt es einen Abschnitt:

| <xsl:when test="ss:Data/@ss:Type = 'DateTime'">
| <xsl:choose>
| <xsl:when test="(contains( $data-format, 'Date') or contains($data-format,'y') or contains($data-format,'g') or contains($data-format,'d') or contains($data-format,'e') or starts-with( substring( ss:Data, 11), 'T00:00:00.000' ) ) and (not (contains( $data-format, 'Time') ) )">
| <xsl:attribute name="office:value-type">date</xsl:attribute>
| <xsl:attribute name="office:date-value">
| <xsl:value-of select="substring-before(ss:Data, 'T')"/>
| </xsl:attribute>
| </xsl:when>
| <xsl:otherwise>
| <xsl:attribute name="office:value-type">time</xsl:attribute>
| <xsl:attribute name="office:time-value">
| <xsl:value-of select="concat('P',substring(ss:Data, 11, 3), 'H', substring(ss:Data, 15, 2), 'M', substring(ss:Data, 18,2), 'S')"/>
| </xsl:attribute>
| </xsl:otherwise>
| </xsl:choose>
| </xsl:when>

...welcher mir als Laien fuer die Konversion des obigen Konstrukts
verantwortlich zu sein scheint (und, so ich das richtig interpretiere,
nur _entweder_ ein Datum, _oder_ eine Uhrzeit erzeugt). Nur reichen
meine XSLT-Kenntnisse nicht einmal im entferntesten so weit, dass ich da
die selbst passenden Korrekturen vornehmen koennte. Vorschlaege?

Servus,
Stefan

http://kontaktinser.at/ - die kostenlose Kontaktboerse fuer Oesterreich

Gestàndig? Gestàndiger als Stefan!? Glaube und Zahle!
(Sloganizer)

Ähnliche fragen