Alt 16.06.2011, 16:05:20   #1 (permalink)
Erfahrener Benutzer
Benutzerbild von Papenburger

ID: 336361
Lose-Remote

Reg: 08.05.2006
Beiträge: 1.162
Papenburger
Standard [GELÖST] Alphabet als Index

Hallo,

ich beschäftige mich gerade mit PHPExcel.
Mein problem ist nun, dass ich eine variable Anzahl von Spalten habe und ver $x, $y nicht die Summe der Spalten bilden kann.

Aus diesem Grund versuche ich einen Algorythmus zu schreiben, welcher mir beim Index 27 Beispielsweise die Spalte AA selectiert. Der Index 46 wäre dann die Spalte AT.

Hat hier vielleicht jemand einen Algorythmus oder eine Idee wie man dies Umrechnen könnte? Gibt es soetwas wie einen Alphabetischen Index, welcher wie im Excel mit A anfängt und bis Z läuft und dann mit AA, AB, usw. weiter macht?

Mein bisheriger Versuch ist folgender:
PHP-Code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
function getColumnName($index 1){
    global 
$alphabet;

    
//Spaltenname
    
$columnName '';

    
//Anzahl der Durchläufe
    
$columnCount ceil($index/count(alphabet));
    
    
$i 1;
    while(
$i <= $columnCount){
        
//Prüfen, welcher Buchstabe benötigt wird.
        
$alphabet_index = ($i $columnCount) ? $index $i;

        
//Spaltennamen zusammensetzen
        
$columnName .= $alphabet[$alphabet_index];
        
$i++;
    }
    
    return 
$columnName;

Diese Funktion gibt mir aber nur folgendes zurück:
A
BB
CCC
DDDD

Das heißt, weiter als 4 Spalten kommt er nicht, wobei der Spaltenname auch falsch ist...

Ich bin für jede Hilfe Dankbar!


MFG
Papenburger

Geändert von Papenburger (17.06.2011 um 08:36:12 Uhr)
Papenburger ist offline   Mit Zitat antworten
Gesponsorte Links
Alt 16.06.2011, 16:25:31   #2 (permalink)
bekämpft die Mächte des Bösen
Benutzerbild von theHacker

ID: 69505
Lose-Remote

theHacker eine Nachricht über ICQ schicken theHacker eine Nachricht über AIM schicken theHacker eine Nachricht über MSN schicken theHacker eine Nachricht über Yahoo! schicken theHacker eine Nachricht über Skype™ schicken
Reg: 20.04.2006
Beiträge: 20.468
theHacker genießt hohes AnsehentheHacker genießt hohes AnsehentheHacker genießt hohes AnsehentheHacker genießt hohes AnsehentheHacker genießt hohes AnsehentheHacker genießt hohes AnsehentheHacker genießt hohes AnsehentheHacker genießt hohes AnsehentheHacker genießt hohes AnsehentheHacker genießt hohes AnsehentheHacker genießt hohes Ansehen
Standard

Du musst nix "umrechnen". Einfach nur mit Basis 26 und den Ziffern 'A' bis 'Z' zählen

P.S. Da gibts Funktionen; du musst das Rad nicht neu erfinden, wie man mit einem 26er-Zahlensystem rechnet.
theHacker ist gerade online   Mit Zitat antworten
Alt 16.06.2011, 20:16:26   #3 (permalink)
Erfahrener Benutzer

ID: 129556
Lose-Remote

Reg: 28.02.2010
Beiträge: 439
tobomator tobomator tobomator tobomator tobomator tobomator
Standard

mach doch folgendes:

PHP-Code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
$val "A,B,....,X,Y,Z";
$ar[] = split$val"," );
$cnt 1;

while ( 
$cnt !=) {
   for (
$i=0;$i++;$i<=25) {
        echo 
$ar[i];
   }
   
$cnt--;

Sollte dir A-Z ausgeben.
$cnt kannst du erhöhen, um mehrere Spalten zu erzeugen...
geht auch andersherum, mit $cnt = x; und $cnt++;

keine Ahnung ob es mit dem vom theHacker schneller geht
tobomator ist offline   Mit Zitat antworten
Alt 16.06.2011, 20:26:45   #4 (permalink)
bekämpft die Mächte des Bösen
Benutzerbild von theHacker

ID: 69505
Lose-Remote

theHacker eine Nachricht über ICQ schicken theHacker eine Nachricht über AIM schicken theHacker eine Nachricht über MSN schicken theHacker eine Nachricht über Yahoo! schicken theHacker eine Nachricht über Skype™ schicken
Reg: 20.04.2006
Beiträge: 20.468
theHacker genießt hohes AnsehentheHacker genießt hohes AnsehentheHacker genießt hohes AnsehentheHacker genießt hohes AnsehentheHacker genießt hohes AnsehentheHacker genießt hohes AnsehentheHacker genießt hohes AnsehentheHacker genießt hohes AnsehentheHacker genießt hohes AnsehentheHacker genießt hohes AnsehentheHacker genießt hohes Ansehen
Standard

@tobomator: OMG

Nachtrag:
90 Sekunden ... und ich finde das
http://de2.php.net/manual/en/functio...vert.php#96304
theHacker ist gerade online   Mit Zitat antworten
Alt 16.06.2011, 21:49:56   #5 (permalink)
Erfahrener Benutzer
Benutzerbild von Papenburger

ID: 336361
Lose-Remote

Reg: 08.05.2006
Beiträge: 1.162
Papenburger
Standard

Zitat:
Zitat von theHacker Beitrag anzeigen
@tobomator: OMG

Nachtrag:
90 Sekunden ... und ich finde das
http://de2.php.net/manual/en/functio...vert.php#96304
Das wäre mehr oder weniger das, was ich gesucht hatte. Auf Basen/Potenzen bin ich Gedanklich überhaupt nicht gekommen. Aus diesem Grunde konnte ich über Google auch nichts entsprechendes Finden.

Das Problem habe ich derzeit anders gelöst. Über Umwege kann man in PHPExcel den aktuellen Spaltennamen abfragen...

Den genauen Code-Schnippsel kann ich erst morgen posten.

@theHacker: Danke für den Hinweis. Ich werd mir das mal verinnerlichen!


MFG
Papenburger
Papenburger ist offline Threadstarter   Mit Zitat antworten
Alt 17.06.2011, 08:33:29   #6 (permalink)
Erfahrener Benutzer
Benutzerbild von Papenburger

ID: 336361
Lose-Remote

Reg: 08.05.2006
Beiträge: 1.162
Papenburger
Standard

Für diejenigen die ebenfalls mit PHPExcel ihre Excel-Tabellen erstellen lassen, sei es für den Export von Statistiken oder sonst irgendwelche Daten.

Die aktuelle Spalten bzw. den aktuellen Spaltennamen kann man wie folgt abfragen:

PHP-Code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
//Objekt initialisieren
$objPHPExcel = new PHPExcel();

//Aktuelles Worksheet auswählen
$activeSheet $objPHPExcel->getActiveSheet();

//Inhalt schreiben
$cell $activeSheet->setCellValueByColumnAndRow(00utf8_encode('TEXT'), true);

//Zellennamen abfragen
$cellName $cell->getColumn(); 
1. Als erstes wird das Objekt initialisiert.
2. Dannach wird das aktuelle Worksheet gesetzt bzw. ausgewählt.
3. Mit $activeSheet ->setCellValueByColumnAndRow() wird an der angegebenen Position der Text geschrieben. 0,0 steht dabei für Spalte A, Zeile 1. Hier ist wichtig dass ihr als vierten Parameter true angibt, damit die Methode Rückgabewerte liefert.
4. $cell->getColumn(); liefert euch nun den Spaltennamen in dem ihr euch derzeit befindet.


Ich hoffe, hiermit auch einigen anderen geholfen zu haben...


Viele Grüße
Papenburger
Papenburger ist offline Threadstarter   Mit Zitat antworten
Antwort

Gesponsorte Links

Anzeige


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 
Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks sind an
Pingbacks sind an
Refbacks sind an


Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Array unabhängig von Groß-/Kleinschreibung nach Alphabet sortieren Papenburger Programmierung 9 17.07.2007 22:01:35
Google Index Galaktischer Marketing 7 20.06.2007 08:39:02
[V] Slotdesigns "Alphabet" + NEU: "TOONS" *close* schaefchen01 Lose4Graphics (erledigt) 4 12.10.2006 10:31:42
[mod_rewrite] /forum/index.php über index.php aufrufen k212198 Programmierung 6 18.05.2006 16:21:07


Alle Zeitangaben in WEZ +1. Es ist jetzt 17:29:25 Uhr.