logo

INTERNETNE STORITVE

- IZDELAVA SPLETNIH STRANI - OBLIKOVANJE - PROGRAMIRANJE DODATKOV

PHP - pretvorba Excel datoteke v .txt datoteko - Excel to txt converter

Sedaj, ko poznamo način kako prebrati Excel datoteko se lahko lotimo tudi pretvorbe Excel datoteke v poljuben format, na primer .txt. Zakaj bi to potrebovali, če je Excel boljši način za urejanje / pregled podatkov? Omenjena funkcionalnost pride prav, ko moramo komunicirati s tretjim programom, ki ne podpira branje Excel datoteke ampak le branje .txt datoteke, kjer je vsak stolpec ločen s tabom (\t) in vsaka vrstica ločena s znakom za novo vrstico (\n).

O branju Excela tukaj ne bomo izgubljali besede, celotni postopek je bil enkrat že opisan. Predpostavimo, da imamo v $data spremenljivki celotno vsebino Excel datoteke. Nato s pomočjo PHP foreach konstrukta prečesamo celotno tabelo (array) in zapisujemo podatke v Text (Tab-Delimited) File formatu:

PHP:
  1. // Transform excel file to .txt file - add BOM char at the start
  2. // only for wordpad - notepad UTF8 support
  3. $textFile = "\xEF\xBB\xBF";
  4.  
  5. foreach($data as $row) {
  6.     // Get last key
  7.     end($row);
  8.     $lastKey = key($row);
  9.     reset($row);
  10.  
  11.     foreach($row as $key => $field) {
  12.         $textFile .= $field;
  13.  
  14.         if ($key != $lastKey) {
  15.             $textFile .= "\t";
  16.         }
  17.     }
  18.  
  19.     $textFile .= "\n";
  20. }
  21.  
  22. file_put_contents('test.txt', $textFile);

Primer .txt datoteke:
Pretvorba excel datoteke v txt format

Zakaj pa dodamo "\xEF\xBB\xBF" (BOM znak) na začetu stringa? Zato, da wordpad oz. notepad pravilno zaznata encoding datoteke. BOM znak lahko izpustimo vendar moramo datoteko nato prebrati s programom, ki samodejno prepozna encoding brez pomoči BOM znaka, kot na primer Zend Studio. Primer, kaj se zgodi, če ne vključimo BOM znaka in datoteko (.txt) preberemo s WordPad programom:
Primer konvertiranja excel podatkov v txt podatke - brez UTF8 podpore

Ker dodamo BOM znak na začetku je ZELO POMEMBNO, da ga pri branju podatkov tudi upoštevamo, primer:

PHP:
  1. // If there is BOM char at the begining, clear it
  2. if (strpos($test, "\xEF\xBB\xBF") !== false) {
  3.     $test = str_replace("\xEF\xBB\xBF", "", $test, $count);
  4. }

Drugače boste dobivali zelo čudne napake / rezultate. Več o teh težavah povezanih z BOM znakom.

Dodatne informacije:

Datoteke:

1 komentar na “PHP - pretvorba Excel datoteke v .txt datoteko - Excel to txt converter”

  1. PHP - Kreiranje Excel datoteke - Pisanje v Excel datoteko - PHP - xls | .: TRSplet - internetne storitve .: je napisal:

    [...] PHP - pretvorba Excel datoteke v .txt datoteko - Excel to txt converter [...]

Dodaj komentar