Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit

Bestimmte Excel-Zellen mit PHP auslesen

Frage Entwicklung PHP

Mitglied: gabrielgn

gabrielgn (Level 2) - Jetzt verbinden

16.06.2006, aktualisiert 20.06.2006, 9441 Aufrufe, 8 Kommentare

Hallo Zusammen,
ich habe eine kleine WebSeite, die ständig aktualisierte Daten einer Excel Tabelle braucht. Da ich nicht der Typ bin, für "jeden Tag manuell zu aktualisieren", würde ich gerne das ganze etwas automatisieren. Ich möchte dann nur die Excel Tabelle aktualisieren und mittels PHP wird sich die Seite die nötigen Werte selber auslesen.

Es ist nichts kompliziertes. Ich habe eine Tabelle aus 8 Zeilen und 2 Spalten, die eine gleiche Tabelle in der Excel-Datei wiederspiegelt, so müsste theoretisch nur jede Zelle der Tabelle auf der PHP-Seite mit der gleichen positionierten Zelle in der Excel-Datei referenzieren.

Ich hoffe ihr könnt mir dabei helfen. Vielen Dank im Voraus!

Gab
Mitglied: 16568
16.06.2006 um 16:28 Uhr
Wieso gehst Du nicht den einfacheren Weg?

Das ganze von Excel selbst (VBA) in eine Textdatei einzulesen.
Sollte jeder mit Klick-und-gut zusammenbringen, und Textdateien mittels PHP einlesen auch.


Lonesome Walker
Bitte warten ..
Mitglied: gabrielgn
19.06.2006 um 16:42 Uhr
Hallo,
ich nochmal...
Ich habe mich heute nochmal mit dieses Problem auseinander gesetzt...Ich kam zwar ein Schritt nach vorn, aber leider noch nicht ans Ziel. Dafür brauche ich möglicherweise eure Hilfe...

Ich habe folgendes VBA-Skript im Internet gefunden und etwas angepasst (Spalten- und Zeilenanzahl):

Sub Export2Txt()
Dim x As Long, i As Integer
Dim Zeile As String
Dim Spalten
Const Zeilenzahl = 8 ' hier Zeilenanzahl der Tabelle angeben
Const Spaltenzahl = 2
' gewünschte Länge der einzelnen Spalten (Der 1. Wert 0 wird ignoriert, muss aber aus technischen Gründen sein)
Spalten = Array(0, 8, 6)

Open "test.txt" For Output As #1 ' Zieldatei öffnen

For x = 1 To Zeilenzahl ' alle angegebene Zeilen abarbeiten
Zeile = ""
For i = 1 To Spaltenzahl ' alle angegebene Spalten abarbeiten
If Len(Cells(x, i)) < Spalten(i) Then ' wenn Zelleninhalt kleiner als gewünschte Spaltenbreite
Zeile = Zeile & Cells(x, i) & Space(Spalten(i) - Len(Cells(x, i))) ' mit Leerzeichen auffüllen
Else ' sonst
Zeile = Zeile & Left(Cells(x, i), Spalten(i)) ' auf gewünschte Länge abschneiden
End If
Next i
Print #1, Zeile ' Zeile in Textdatei schreiben
Next x

' Datei schliessen
Close #1
End Sub


Leider produziert dieses Skript nichts wenn ich es ausführe (ich habe auch versucht die test.txt vor der Ausführung zu erstellen...trotzdem erfolgslos..)
Ehrlich gesagt, auch wenn ich keine Ahnung von Excel-VBA habe, fehlt mir irgendwo im code die Angabe von was exportiert werden soll...
Die Tabelle, die ich exportieren möchte ist, wie im Code beschrieben, 8 x 2 Groß... also keine riesen Sache...
Kann mir jemand bitte weiterhelfen?
Danke im Voraus!
Bitte warten ..
Mitglied: 16568
19.06.2006 um 18:38 Uhr
Das is lustich...

Erst mal solltest Du die Textdatei definieren, ungefähr so:

01.
 
02.
Dim TextObjekt, TextDatei 
03.
 
04.
    Set TextObjekt = CreateObject("Scripting.FileSystemObject") 
05.
    On Error Resume Next 
06.
    Set TextDatei = TextObjekt.CreateTextFile("C:/Temp/Test.txt", True) 
07.
    If Err Then Exit Sub 
08.
         
09.
    #hier Deine Operationen ... 
10.
     
11.
    TextDatei.Close 
12.
    Set TextObjekt = Nothing 
13.
 
Und dann solltest Du das ganze in die Sub auto_close() setzen, damit es immer am Ende, wenn Du die Excel-Tabelle schließt, ausgeführt wird, und Du somit immer aktuelle Daten hast.


Lonesome Walker
Bitte warten ..
Mitglied: gabrielgn
19.06.2006 um 19:07 Uhr
Hallo,
danke für deine Hilfe. Ich weiss es ist lustig wenn jemand der keine Ahnung hat was versucht...

Nun habe ich mein Code mit deinen Ergänzungen gefüllt... doch er will trotzdem nicht funktionieren... woran kann es liegen?!

Sub Export2Txt()
Dim TextObjekt, TextDatei

Set TextObjekt = CreateObject("Scripting.FileSystemObject")
On Error Resume Next
Set TextDatei = TextObjekt.CreateTextFile("C:/test.txt", True)
If Err Then Exit Sub

Dim x As Long, i As Integer
Dim Zeile As String
Dim Spalten
Const Zeilenzahl = 8 ' hier Zeilenanzahl der Tabelle angeben
Const Spaltenzahl = 2
' gewünschte Länge der einzelnen Spalten (Der 1. Wert 0 wird ignoriert, muss aber aus technischen Gründen sein)
Spalten = Array(0, 8, 6)

Open "test.txt" For Output As #1 ' Zieldatei öffnen

For x = 1 To Zeilenzahl ' alle angegebene Zeilen abarbeiten
Zeile = ""
For i = 1 To Spaltenzahl ' alle angegebene Spalten abarbeiten
If Len(Cells(x, i)) < Spalten(i) Then ' wenn Zelleninhalt kleiner als gewünschte Spaltenbreite
Zeile = Zeile & Cells(x, i) & Space(Spalten(i) - Len(Cells(x, i))) ' mit Leerzeichen auffüllen
Else ' sonst
Zeile = Zeile & Left(Cells(x, i), Spalten(i)) ' auf gewünschte Länge abschneiden
End If
Next i
Print #1, Zeile ' Zeile in Textdatei schreiben
Next x

TextDatei.Close
Set TextObjekt = Nothing
' Datei schliessen
Close #1
End Sub



Die Textdatei wird zwar generiert, doch sie ist leer.
Bitte warten ..
Mitglied: 16568
19.06.2006 um 19:18 Uhr
Ja, welches Tabellenblatt soll er denn nehmen?

Nicht böse gemeint, aber ich würde Dein Profil mal anpassen.
Ein Programmierer sieht den Fehler in Deinem Quelltext nämlich SOFORT.


Lonesome Walker
Bitte warten ..
Mitglied: gabrielgn
19.06.2006 um 19:52 Uhr
Im ersten Beitrag von mir steht:

"Ehrlich gesagt, auch wenn ich keine Ahnung von Excel-VBA habe, fehlt mir irgendwo im code die Angabe von was exportiert werden soll..."

Es folgt, dass meine Tabelle eine 8x2 Tabelle ist..also nichts großartiges.
Könnt Ihr mir helfen den Code aufzubauen?

Nicht Böse gemeint... Also ich mein Profil dürfte ich so lassen wie es ist...
Bitte warten ..
Mitglied: 16568
19.06.2006 um 21:18 Uhr
Was ich mit meinem oberen Posting gemeint hatte:

Dir fehlen die rudimentärsten Kenntnisse des Programmierens!!!

Hier der korrigierte Source (und das ist der letzte für Dich):

01.
 
02.
Sub Auto_close() 
03.
 
04.
Dim TextObjekt, TextDatei 
05.
Dim x As Long, i As Integer 
06.
Dim Zeile As String 
07.
Dim Spalten 
08.
Const Zeilenzahl = 8 ' hier Zeilenanzahl der Tabelle angeben 
09.
Const Spaltenzahl = 2 
10.
Spalten = Array(0, 8, 6) ' gewünschte Länge der einzelnen Spalten (Der 1. Wert 0 wird ignoriert, muss aber aus technischen Gründen sein) 
11.
 
12.
Set TextObjekt = CreateObject("Scripting.FileSystemObject") 
13.
On Error Resume Next 
14.
Set TextDatei = TextObjekt.CreateTextFile("C:\test.txt", True) 
15.
If Err Then Exit Sub 
16.
 
17.
TextDatei.Close ' hiermit wird die Datei wieder geschlossen 
18.
Set TextObjekt = Nothing ' Objekt wird getiltet ;-) 
19.
 
20.
Open "C:\test.txt" For Output As #1 ' Zieldatei öffnen 
21.
 
22.
For x = 1 To Zeilenzahl ' alle angegebene Zeilen abarbeiten 
23.
Zeile = "" 
24.
For i = 1 To Spaltenzahl ' alle angegebene Spalten abarbeiten 
25.
If Len(Cells(x, i)) < Spalten(i) Then ' wenn Zelleninhalt kleiner als gewünschte Spaltenbreite 
26.
Zeile = Zeile & Cells(x, i) & Space(Spalten(i) - Len(Cells(x, i))) ' mit Leerzeichen auffüllen 
27.
Else ' sonst 
28.
Zeile = Zeile & Left(Cells(x, i), Spalten(i)) ' auf gewünschte Länge abschneiden 
29.
End If 
30.
Next i 
31.
Print #1, Zeile ' Zeile in Textdatei schreiben 
32.
Next x 
33.
 
34.
Close #1 ' Datei schliessen 
35.
 
36.
End Sub 
37.
 

Ist sicher optimierbar (da bin ich mir wirklich sicher ), aber ich arbeite nicht für andere umsonst (denn der Fehler ist entweder Faulheit, oder pure Ignoranz der Programmier-Technik...)


Lonesome Walker
Bitte warten ..
Mitglied: gabrielgn
20.06.2006 um 10:58 Uhr
Danke, es hat geklappt...auch wenn es nicht gerade die netteste Hilfe war.
Bitte warten ..
Neuester Wissensbeitrag
CPU, RAM, Mainboards

Angetestet: PC Engines APU 3a2 im Rack-Gehäuse

(1)

Erfahrungsbericht von ashnod zum Thema CPU, RAM, Mainboards ...

Ähnliche Inhalte
PHP
gelöst Externe XML-Datei in PHP auslesen (18)

Frage von Akrosh zum Thema PHP ...

VB for Applications
gelöst Einzelne Begriffe aus PDF in Excel per VBA auslesen (20)

Frage von joha1908 zum Thema VB for Applications ...

Heiß diskutierte Inhalte
Grafikkarten & Monitore
Win 10 Grafikkarte Crash von Software? (13)

Frage von Marabunta zum Thema Grafikkarten & Monitore ...

DSL, VDSL
DSL-Signal bewerten (13)

Frage von SarekHL zum Thema DSL, VDSL ...

Switche und Hubs
Trunk für 2xCisco Switch. Wo liegt der Fehler? (9)

Frage von JayyyH zum Thema Switche und Hubs ...

Windows Server
Mailserver auf Windows Server 2012 (9)

Frage von StefanT81 zum Thema Windows Server ...