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