Kom ihåg mig?
Home Menu

Menu


Någon som är bra på excel/access?

Ämnesverktyg Visningsalternativ
Oläst 2005-02-02, 03:44 #1
Nick - AGAIGs avatar
Nick - AGAIG Nick - AGAIG är inte uppkopplad
Medlem
 
Reg.datum: Sep 2004
Inlägg: 58
Nick - AGAIG Nick - AGAIG är inte uppkopplad
Medlem
Nick - AGAIGs avatar
 
Reg.datum: Sep 2004
Inlägg: 58
Tjena,

Jag har ett par text filer där informationen slutligen skall till access. Detta är företags info. Problemet är att all text ligger i samma rad, typ 6-8 rader per företag. I det stora ser det ut så här rakt över:
2. Micanor A.S.
Address:P.O.Box 6611, Roedeloekka, (Sinsenveien 11), N-0502 Oslo, Norway
Phone47) 22809700
Fax47) 22809701
E-mail:[email protected]
Contact:Mr Dag Fylling, Manager


3. Snorre AS
Address:Nordre Langarinden 7, N-5131 Nyborg-Bergen, Norway
Phone47) 55-531890
Fax47) 55-192990
Contact:Mr Egil Hundven, Managing Director

Jag har problem att konvertera detta till kollumner. 2 kollumner är inga problem men vad jag vill ha är en kollumn för adress, en för Phone, en för Fax, etc,. En kille jag träffat här på WN har försökt bygga en PHP fil men vi är inte riktigt framme ännu. http://jozo.mine.nu/txt/ (klipp och klistar ovan text). Är det någon som vet om detta är möjligt.

Niclas
Nick - AGAIG är inte uppkopplad   Svara med citatSvara med citat
Oläst 2005-02-02, 06:44 #2
PeterM PeterM är inte uppkopplad
Medlem
 
Reg.datum: Dec 2004
Inlägg: 56
PeterM PeterM är inte uppkopplad
Medlem
 
Reg.datum: Dec 2004
Inlägg: 56
Allt är möjligt.

Mindre-än-femminuters-hack i PHP. Skapa en stack med standardvärden, kör över standardvärden med riktiga värden, spara stacken vid nytt företag, nollställ stacken. Resultatet blir enkel tabseparerad text som borde gå att importera enkelt till valfri databas.

Kod:
<?php
$data = file_get_contents("data.txt");
$data = str_replace("\r", "", $data);
$rows = explode("\n", $data);

$processed = array();
$save = array('Company' => "", 'Address' => "", 'Phone' => "", 'Fax' => "", 'E-mail' => "", 'Contact' => "");
foreach($rows as $row) {

	if(strlen($row) != 0) {

 if(preg_match("/^([0-9]+\. )/", $row)) {
 	if($save['Company'] != "") $processed[] = $save;
 	$save = array('Company' => "", 'Address' => "", 'Phone' => "", 'Fax' => "", 'E-mail' => "", 'Contact' => "");

 	list($n, $value) = explode(". ", $row, 2);
 	$save['Company'] = $value;
 } else {
 	list($field, $value) = explode(":", $row, 2);
 	$save[$field] = $value;
 }

	}

}
if($save['Company'] != "") $processed[] = $save;

echo "<pre>\n";
echo "Company\tAddress\tPhone\tFax\tE-mail\tContact\n";
foreach($processed as $company) echo implode("\t", $company) . "\n";
echo "</pre>\n";
?>
Koden utgår dock ifrån att det finns tomma rader mellan varje "företagsblock". Gör det inte det så stupar den. Fungerar det inte så får ni kanske ideér i alla fall, men vill ni slippa anstränga er så kan ni skicka hela rasket till mig (skicka PM) så fixar jag det på en fikarast.
PeterM är inte uppkopplad   Svara med citatSvara med citat
Svara


Aktiva användare som för närvarande tittar på det här ämnet: 1 (0 medlemmar och 1 gäster)
 

Regler för att posta
Du får inte posta nya ämnen
Du får inte posta svar
Du får inte posta bifogade filer
Du får inte redigera dina inlägg

BB-kod är
Smilies är
[IMG]-kod är
HTML-kod är av

Forumhopp


Alla tider är GMT +2. Klockan är nu 16:32.

Programvara från: vBulletin® Version 3.8.2
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Svensk översättning av: Anders Pettersson
 
Copyright © 2017