php-resource




Archiv verlassen und diese Seite im Standarddesign anzeigen :
regexp noch und nöcher... oder was anderes?


 
mrhappiness
05-02-2003, 22:26 
 
aaalllsoooo (würde Onkel Stein jetzt sagen *g*)

ich hab mich nach reiflicher überlegung (und suche im forum) dazu entschlossen, excel-dateien nur dann einzulesen und zu verarbeiten, wenn sie als xml-datei vorliegen (*.xls is doof und nich dokumentiert und überhaupt und sowieso)

Problem: Ich blick's net so ganz
die xml-datei is groß, sehr groß und sieht ungefähr so aus<?xml version="1.0"?>
<Workbook xmlns="urn:schemas-microsoft-com:office:spreadsheet"
xmlns:o="urn:schemas-microsoft-com:office:office"
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">
<DocumentProperties xmlns="urn:schemas-microsoft-com:office:office">
...
</DocumentProperties>
<OfficeDocumentSettings xmlns="urn:schemas-microsoft-com:office:office">
...
</OfficeDocumentSettings>
<ExcelWorkbook xmlns="urn:schemas-microsoft-com:office:excel">
...
</ExcelWorkbook>
<Styles>
<Style ss:ID="Default" ss:Name="Normal">
<Alignment ss:Vertical="Bottom"/>
<Borders/>
<Font/>
<Interior/>
<NumberFormat/>
<Protection/>
</Style>
<Style ss:ID="s23">
<Alignment ss:Horizontal="Center" ss:Vertical="Bottom"/>
<Borders>
<Border ss:Position="Bottom" ss:LineStyle="Continuous" ss:Weight="1"/>
<Border ss:Position="Left" ss:LineStyle="Continuous" ss:Weight="2"/>
<Border ss:Position="Right" ss:LineStyle="Continuous" ss:Weight="1"/>
<Border ss:Position="Top" ss:LineStyle="Continuous" ss:Weight="2"/>
</Borders>
<Font ss:FontName="Verdana" x:Family="Swiss" ss:Size="8" ss:Bold="1"/>
<Interior/>
</Style>
.... //jede Menge weiterer Styles
</Styles>
<Worksheet ss:Name="Vorlesungskalender">
<Table ss:ExpandedColumnCount="7" ss:ExpandedRowCount="103" x:FullColumns="1"
x:FullRows="1" ss:DefaultColumnWidth="60">
<Column ss:Width="48"/>
<Column ss:AutoFitWidth="0" ss:Width="103.5" ss:Span="4"/>
<Row ss:Height="13.5">
<Cell ss:StyleID="s86"><Data ss:Type="String">Klausur</Data></Cell>
<Cell ss:StyleID="s85"><Data ss:Type="String">Zusatzvorlesung</Data></Cell>
<Cell ss:StyleID="s41"><Data ss:Type="String">normal</Data></Cell>
<Cell ss:StyleID="s55"><Data ss:Type="String">Änderung</Data></Cell>
<Cell ss:StyleID="s87"><Data ss:Type="String">Vorschlag</Data></Cell>
<Cell ss:StyleID="s70"/>
</Row>
</Table>
</Worksheet>
</Workbook> ich interpretier das einfach mal so, dass in jedem style-abschnitt festgelegt wird, wie bestimmte zellen auszusehen haben und bei den Zellen selbst wird über ss:StyleID="s00" die zuordnung gemacht (du siehst so aus wie in dem Style mit ID s00)

Frage:
Wie mach ich das am besten in PHP?
Momentan hab ich vor, alles was zwischen <Styles> und </Styles> steht in ein array einzulesen (pro style ein eintrag [id = key; die einträge als value, am besten gleich in html...]) und mich dann um den <worksheet> bereich zu kümmern und das dann so in etwa zu machen: alles zwischen <row> und </row> als einträge eines arrays
<tr> schreiben
jeden <cell> eintrag nehmen, id raussuchen, in id-array nachschauen und entsprechendes html einfügen
<td>eigentlichen inhalt ausgeben</td>
</tr> schreibengeht das auch irgendwie einfacher? wenn ja, wie?
wenn nein, wie mach ich das hier am einfachsten?

 
wahsaga
05-02-2003, 22:52 
 
ich hab mich nach reiflicher überlegung (und suche im forum) dazu entschlossen, excel-dateien nur dann einzulesen und zu verarbeiten, wenn sie als xml-datei vorliegen (*.xls is doof und nich dokumentiert und überhaupt und sowieso)
warum nicht gleich im .csv-format?

das sind alle felder der tabelle in einer textdatei gespeichert, die einzelnen felder durch semikolon getrennt.

und um sowas einzulesen gibt es sogar schon fertige scripte.

eine .xls-datei kannst du mit excel auch problemlos unter dem typ .csv speichern

einziger 'nachteil': irgendwelche textformatierungen oder funktionen und makros die in der .xls-datei definiert sind, gehen dabei verloren, .csv beinhaltet wirklich nur die reinen daten als plain text.

aber das dürfte in deinem fall eher nicht ins gewicht fallen, nehme ich an...?

 
mrhappiness
05-02-2003, 23:22 
 
csv is nich gut, da ich die textformatierung brauche, das is mein großes problem


Alle Zeitangaben in WEZ +2. Es ist jetzt 10:08 Uhr.