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
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:
wenn nein, wie mach ich das hier am einfachsten?
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
Code:
<?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>
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> schreiben
wenn nein, wie mach ich das hier am einfachsten?
Kommentar