CSV-файлы очень популярны для представления электронных таблиц - файл является текстовым, ячейки таблицы в нём разделяются точкой с запятой. Представляем вашему вниманию класс, разработанный Кондраковым Александром Владимировичем, позволяющий генерировать CSV-файл из массива PHP.

Генерация CSV-файла

< ?php
class CsvReader
{
    private $file;
    private $delimiter;
    private $length;
    private $handle;
    private $csvArray; 

    public function __construct($file, $delimiter=";", $length = 8000)
    {
       $this->file = $file;
       $this->length = $length;
       $this->delimiter = $delimiter;
       $this->FileOpen();
    }
    public function __destruct()
    {
       $this->FileClose();
    }
    public function GetCsv()
    {
        $this->SetCsv();
        if(is_array($this->csvArray))
         return $this->csvArray;
    }

    private function SetCsv()
    {
        if($this->GetSize())
        {
            while (($data = @fgetcsv($this->handle, $this->length, $this->delimiter)) !== FALSE)
            {
                $this->csvArray[] = $data;
            }
        }
    }
    private function FileOpen()
    {
        $this->handle=($this->IsFile())?fopen($this->file, 'r'):null;
    }
    private function FileClose()
    {
        if($this->handle)
         @fclose($this->handle);
    }
    private function GetSize()
    {
        if($this->IsFile())
            return (filesize($this->file));
        else
            return false;
    }
    private function IsFile()
    {
        if(is_file($this->file) &#038;& file_exists($this->file))
            return true;
        else
            return false;
    }
} 

class CsvWriter
{
    private $file;
    private $delimiter;
    private $array;
    private $handle;
    public function __construct($file, $array, $delimiter=";")
    {
        $this->file = $file;
        $this->array = $array;
        $this->delimiter = $delimiter;
        $this->FileOpen();
    }
    public function __destruct()
    {
        $this->FileClose();
    }
    public function GetCsv()
    {
        $this->SetCsv();
    }

    private function IsWritable()
    {
        if(is_writable($this->file))
            return true;
        else
            return false;
    }
    private function SetCsv()
    {
      if($this->IsWritable())
      {
          $content = "";
          foreach($this->array as $ar)
          {
             $content .= implode($this->delimiter, $ar);
             $content .= "rn";
          }
          if (fwrite($this->handle, $content) === FALSE)
                 exit;
      }
    }
    private function FileOpen()
    {
        $this->handle=fopen($this->file, 'w+');
    }
    private function FileClose()
    {
        if($this->handle)
         @fclose($this->handle);
    }
}
$array = array(array('1','1','1'), array('2','2','2'), array('3','3','3'));
$dd = new CsvWriter('test.txt',$array);
$dd->GetCsv();
?> 



Постоянные ссылки

При копировании ссылка на TeaM RSN обязательна!

URI

Html (ЖЖ)

BB-код (Для форумов)

Оставить комментарий

Вы должны войти, чтобы оставить комментарий.