1. This site uses cookies. By continuing to use this site, you are agreeing to our use of cookies. Learn More.

editare fisier linux

Discussion in 'Ajutor: Software și sisteme de operare' started by pitzy, Jun 20, 2012.

  1. pitzy

    pitzy Membru

    Am un fisier excel de forma:
    Coloana 1 Coloana 2 Coloana 3 Coloana 4 Coloana 5 Coloana 6
    Raport 2011 Centrul de proiecte si programe 26597213 Bucuresti 19.06.2012 0
    educationale si sportive pentru
    copii si tineret Bucuresti
    Raport 2011 DIRECTIA DE ASISTENTA 22970653 Cluj-Napoca 18.06.2012 13,22
    SOCIALA SI MEDICALA


    Exporata CSV si preluat in linux fisierul arata

    Raport 2011;Centrul de proiecte si programe;26597213;Bucuresti;19/06/12;0
    ;educationale si sportive pentru;;;;
    ;copii si tineret Bucuresti;;;;
    Raport 2011;DIRECTIA DE ASISTENTA;22970653;Cluj-Napoca;18/06/12;13,22
    ;SOCIALA SI MEDICALA;;;;

    ; - separatorul de celula

    Vreau sa elimin casutele goale astfel incat fisierul sa arate asa

    Raport 2011;Centrul de proiecte si programe educationale si sportive pentru copii si tineret Bucuresti;26597213;Bucuresti;19/06/12;0
    Raport 2011;DIRECTIA DE ASISTENTA SOCIALA SI MEDICALA;22970653;Cluj-Napoca;18/06/12;13,22

    adica celulele din coloana a doua se le imbin astfel incat informatia sa nu mai fie impartita pe mai multe randuri. NU se poate face manual pentru ca sunt peste 4000 de randuri in tabel
     
  2. AdrianB1

    AdrianB1 Membru Senior

    Exportat din Excel CSV il bagi prin Notepad ++, replace ;; with ; consecutiv de 2-3 ori (ca sa elimine si ;;; sau ;;;:wink: si gata, il trimiti in linux sau pe luna.
     
  3. pitzy

    pitzy Membru

    Untitled.jpg pai daca elimin ";" ce apare in liniile incomplete pe coloana 2 se muta la sfarsitul liniei anterioare. eu vreau ca informatia din coloana 2 randul x sa se adauge la informatia din coloana 2 randul x-1 daca in fata ei sunt celule goale
     
  4. AdrianB1

    AdrianB1 Membru Senior

    Nimic nu se muta o linie mai sus, terminatorul de linie e CR/LF, nu ";".
     
  5. pitzy

    pitzy Membru

    Am facut cum ai zis tu, nu se intampla nimic. Ramane aceasi situatie ca in poza atasata
    Nu multitudinea de caractere ";" e problema ci cum concatenez informatia din celulele respective
     
  6. Marius '95

    Marius '95 Membru Senior

    Code:
    <?php
    define('c',1);//Inlocuiesti "1" cu numarul coloanei problematice. Prima coloana este coloana 0.
    define('input','X:\cale\catre\fisier.csv');//Sursa
    define('output','X:\cale\catre\fisiser_corectat.csv');//Destinatia
    
    $file=file(input,'r');
    $out=array();
    foreach($file as $line => $text){
     $cells=explode(';',trim($text));
     if($cells[0]!=''){
      $out[$line]=$cells;
      $prev=$line;}
     else $out[$prev][c].=' '.$cells[c];}
    unset($file,$line,$prev,$text,$cells);
    $file=fopen(output,'w');
    foreach($out as $line){
     foreach($line as $cell)fwrite($file,$cell.';');
     fwrite($file,"\r\n");}
    fclose($file);
    echo('Done.');
    ?>
    N-am testat, dar ar trebui sa mearga din prima.
     
  7. AdrianB1

    AdrianB1 Membru Senior

    Daca deschizi fisierul in Notepad sunt linii distincte sau e un singur sir lung? Ce separatori de linie ai?
     
  8. pitzy

    pitzy Membru

    scuze, e un singur sir lung in notepad
     
  9. AdrianB1

    AdrianB1 Membru Senior

    Atunci vezi ce faci la export in Excel de ajunge in halul ala.