regexp noch und nöcher... oder was anderes?

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • regexp noch und nöcher... oder was anderes?

    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
    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>
    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> schreiben
    geht das auch irgendwie einfacher? wenn ja, wie?
    wenn nein, wie mach ich das hier am einfachsten?
    Ich denke, also bin ich. - Einige sind trotzdem...

  • #2
    Re: regexp noch und nöcher... oder was anderes?

    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...?
    I don't believe in rebirth. Actually, I never did in my whole lives.

    Kommentar


    • #3
      csv is nich gut, da ich die textformatierung brauche, das is mein großes problem
      Ich denke, also bin ich. - Einige sind trotzdem...

      Kommentar

      Lädt...
      X