[Excel] - CSV Export, Excel: bemoei je er niet mee!

Pagina: 1
Acties:
  • 328 views sinds 30-01-2008
  • Reageer

Onderwerpen


Acties:
  • 0 Henk 'm!

  • gvanh
  • Registratie: April 2003
  • Laatst online: 02-12-2023

gvanh

Webdeveloper

Topicstarter
Hallo!

Met PHP maak ik een database rapportage en schrijf die weg als CSV bestand. Daarin komen datums voor, en telefoonnumer (0612345678 b.v.).
Hiep hoera voor de gebruikersvriendelijkheid ... zodra je het bestand opent in Excel worden direct alle data omgezet naar het voorkeurs-formaat van Excel en van alle telefoonnummers wordt de eerste nul afgestript omdat Excel vindt dat het een getal is.

Kan ik Excel via instellingen van mijn CSV bestand duidelijk maken dat hij zich er niet mee moet bemoeien?

*Zucht* Het lijkt erop dat ik de laatste jaren meer bezig ben met het voorkomen van de implicaties van zogenaamde "gebruikersvriendelijkheid", dan dat ik met ontwikkelen bezig bent ... vermooooeeeeiend.
8)7

Acties:
  • 0 Henk 'm!

  • BtM909
  • Registratie: Juni 2000
  • Niet online

BtM909

Watch out Guys...

Als je alle data exporteert tussen ' ', heb je het fenomeen dan ook?

leuke titel trouwens ;)

Ace of Base vs Charli XCX - All That She Boom Claps (RMT) | Clean Bandit vs Galantis - I'd Rather Be You (RMT)
You've moved up on my notch-list. You have 1 notch
I have a black belt in Kung Flu.


Acties:
  • 0 Henk 'm!

  • Softmore
  • Registratie: Mei 2006
  • Laatst online: 11:10
Misschien dat Acces wat meer soelaas biedt:

Via Acces is het mogelijk om in te stellen bij het importeren uit een CVS dat het om een getal al da niet over tekst gaat, om zo je leading 0 te behouden.

Acties:
  • 0 Henk 'm!

  • gvanh
  • Registratie: April 2003
  • Laatst online: 02-12-2023

gvanh

Webdeveloper

Topicstarter
Was mijn eerste ingeving ook ... geprobeerd met dubbele quotes ... ik neem aan dat het mogelijke effect hetzelfde zou zijn. Helaas biedt ook dat geen soelaas.

Aanvulling:
Net toch ook nog even geprobeerd met single quote. Grappig genoeg is er nog wel een verschil. Het veld wordt nu volledig weergegeven ... alleen wel inclusief single quotes ... het biedt dus helaas nog geen oplossing.
leuke titel trouwens ;)
Thanks :) ... ik erger me dan ook te vaak aan het ondoordacht functioneren van veel producten (vaak uit de hoek van Redmond) ... breek me de bek niet open.
Misschien dat Acces wat meer soelaas biedt:

Via Acces is het mogelijk om in te stellen bij het importeren uit een CVS dat het om een getal al da niet over tekst gaat, om zo je leading 0 te behouden.
Probleem is een beetje dat het systeem geautomatiseerd moet werken ... er mag geen tussenstap in zitten. Anders zou ik ook in Excel iedere export kunnen openen ... de veldtypen goed kunnen zetten en vervolgens het bestand kunnen opslaan. Het moet juist voor meerdere eindgebruikers direct in Excel te gebruiken zijn zonder dat ze hoeven nadenken over dit soort triviale dingen.

[ Voor 93% gewijzigd door gvanh op 13-02-2007 11:08 . Reden: aanvulling. ]


Acties:
  • 0 Henk 'm!

  • BtM909
  • Registratie: Juni 2000
  • Niet online

BtM909

Watch out Guys...

Wellicht dat dit een oplossing is: http://groups.google.com/...566074%23d217b02a49566074

MAar begrijp ik nou goed dat je wel de csv -> kolommen functionaliteit wilt, maar niet de automatic formatting?

Ace of Base vs Charli XCX - All That She Boom Claps (RMT) | Clean Bandit vs Galantis - I'd Rather Be You (RMT)
You've moved up on my notch-list. You have 1 notch
I have a black belt in Kung Flu.


Acties:
  • 0 Henk 'm!

  • urk_forever
  • Registratie: Juni 2001
  • Laatst online: 11-09 18:27
Als je single quotes gebruikt dan komen die ook in Excel te staan dus ik weet niet of je dat wat vindt. Als je het telnummer als 06-12345678 exporteert wordt hij goed overgenomen in excel.

Dit is ook wel interessant:

http://groups.google.nl/g...=1&hl=nl#64da8df76ec30470

Of dit, om dus tijdens het openen van de csv te vragen of er geformateerd moet worden of niet:

http://groups.google.nl/g...=2&hl=nl#d83bc03106570f24

Deze suggestie zegt dat als je een spatie voor iets zegt dat hij het dan ook niet formateerd:

http://groups.google.nl/g...14&hl=nl#cfabcd2e51aeec85

[ Voor 78% gewijzigd door urk_forever op 13-02-2007 11:23 ]

Hail to the king baby!


Acties:
  • 0 Henk 'm!

  • tyrion70
  • Registratie: December 2006
  • Laatst online: 14-05-2021
Weet niet of dit een optie is.. Maar wij exporteren vanuit php direct in Excel's eigen formaat.. Dat werkt prima bij ons..:

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
  case "xls":
    // begin file
    $xlsstring = pack( "ssssss", 0x809, 0x08, 0x00,0x10, 0x0, 0x0 );
    // write 1. line = field names
    for ($i=0; $i < count($f_lang);$i++) {
      $xlsstring .= pack( "s*", 0x0204, 8+strlen($f_lang[$i]), 0, $i, 0x00, strlen($f_lang[$i]) );
      $xlsstring .= $f_lang[$i];
    }
    // write content
    $a=0;
    foreach ($export_array as $line) {
      for ($i=0;$i < count($line); $i++) {
        // special patch for xl since it doesn't understand \r as the line ende
        $line[$i] = str_replace("\r", "", $line[$i]);
        $xlsstring .= pack( "s*", 0x0204, 8+strlen($line[$i]), $a+1, $i, 0x00, strlen($line[$i]) );
        $xlsstring .= $line[$i];
      }
      $a++;
    }
    $xlsstring .= pack("ss", 0x0A, 0x00);
    echo $xlsstring;
    break;


Voor de verklaring export_array wordt gemaakt met de volgende functie:

code:
1
2
3
4
5
6
7
8
9
function make_export_array($query) {
  $result = db_query($query) or db_die();
  while ($row = db_fetch_row($result)) {
    $line = array();
    foreach($row as $element) { $line[] = $element; }
    $export_array[] = $line;
  }
  return $export_array;
}


Misschien nog wat Tweaking nodig, maar dat moet geen probleem zijn :) Succes!

Doe maar gek! Anderen doen al gewoon genoeg :P


Acties:
  • 0 Henk 'm!

  • Lustucru
  • Registratie: Januari 2004
  • Niet online

Lustucru

26 03 2016

Uiteindelijk komt het erop neer dat je een csv bestand niet in excel moet openen maar moet importeren. Voor de rest is het idd of zelf excel bestanden bouwen of workarounds.

nog meer php, csv en excel: CSV met o.a. telefoonnummers naar Excel
offtopic:
!!!-!!=!
;)

De oever waar we niet zijn noemen wij de overkant / Die wordt dan deze kant zodra we daar zijn aangeland


Acties:
  • 0 Henk 'm!

  • gvanh
  • Registratie: April 2003
  • Laatst online: 02-12-2023

gvanh

Webdeveloper

Topicstarter
He ... vooral die native Excel mogelijkheden vind ik gaaf ... daar ga ik 'ns even induiken. Ik ging er tot nog toe vanuit, dat je alleen met COM objecten (en dus met PHP onder windows) native Excel bestanden kon maken. Ik ga ook die pack functie 'ns bekijken ... heb ik eigenlijk nooit iets meegedaan.

Thanks!

Even Off-Topic trouwens ... nog zo'n "Bemoei je er niet mee" verhaal. Ik plak met <ctrl-v> een stuk website in een Word document, en dan moet ik altijd nog 'ns zeggen "paste as text" om niet alle ellendige opmaak mee te krijgen (wie wil dat ooit?). Ik heb flink wat settings doorgekeken, maar kan nergens een optie vinden die het mogelijk maakt om standaard te plakken als tekst. |:(

[ Voor 38% gewijzigd door gvanh op 13-02-2007 13:50 ]


Acties:
  • 0 Henk 'm!

  • onkl
  • Registratie: Oktober 2002
  • Laatst online: 11:19
Je kan een enkel bestandje openen en dan die kolom aangeven als "text". Als je dat doet terwijl je macrorecorder loopt en vervolgens werk je de VBA code zo bij dat er om een bestandsnaam wordt gevraagd (zoek in VBA op: getopenfilename), dan heb je een macrootje wat je bestand "goed" opent. Die kan je vervolgens onder een knop in je knoppenblakjes zetten.
't Blijft een workaround, maar deze kost vrij weinig werk (als er in het plethora aan vinkjes tenminste geen prettige combi te vinden is)
Pagina: 1