Edellinen koodivinkkini käsitteli excelistä hakemista, eli SELECT-lauseen suorittamista odbc-yhteyden kautta. Voit katsoa kyseisen vinkin tästä:
https://www.ohjelmointiputka.net/koodivinkit/24461-php-odbc-excel-tietokanta
Uusin koodivinkki käsittelee excel-tiedostoon kirjoittamista käyttäen samanlaista odbc-yhteysstringiä + excel-tiedostoa. Huomattavaa kirjoittamisessakin on, että sarakkeille on annettava itse nimet - eli ensimmäiselle riville on sisällytettävä sarakenimet. Lisäksi taulun (sheet) nimen perään on sql-lauseissa laitettava merkki $.
Nyt koodi:
<?php // Käyttäjänimi + pwd=salasana (valinnaiset) $UserName = ""; $PWD = ""; // yhdistettävän excel-tiedoston nimi (laita polku eteen jos ei sijaitse oletushakemistossa, kts. oletushakemisto DSN-stringistä) $TPideFile = "TiedostoNimi.xls"; // DSN-string, yhdistää odbc:n kautta xls-tiedostoon // Huomioi erona SELECT-lauseen suoritukseen ReadOnly=0; $DSN = "DRIVER={Microsoft Excel Driver (*.xls)}; DBQ=".$TPideFile.";UserCommitSync=Yes; Threads=3; SafeTransactions=0; PageTimeout=5; MaxScanRows=8; ReadOnly=0; MaxBufferSize=2048; DriverId=281; DefaultDir=C:\Ohjelmatiedostot\Apache Group\Apache\htdocs"; // Yhteys tiedostoon avataan $Conn = @odbc_connect($DSN, $UserName, $PWD); // Taulun nimi (Sheet name) $TauluNimi = "Taul1"; // Arvot jotka sijoitetaan uuteen tiedostoon (nämähän voidaan hakea mistä tahansa, esimerkiksi formista) $Arvo1 = "Tulee sarakkeeseen A"; $Arvo2 = "Tulee sarakkeeseen B"; $Arvo3 = "Tulee sarakkeeseen C"; // Varsinainen sql-lause, kts. muuttujien arvot edellä // Tässä tiedostoon on kirjoitettu 1. riville kirjaimet a,b,c (eli sarakkeille nimet) $sql = "INSERT INTO [".$TauluNimi."$] (A,B,C) VALUES ('".$Arvo1."','".$Arvo2."','".$Arvo3."')"; // Suoritetaan insert-lause $Conn-yhteyden kautta if ($res=odbc_exec($Conn,$sql)) { odbc_free_result($rowRes); } else { // Livautetaan ruutuun virhe jos ei toimi echo 'Tiedosto on joko "vain luku" - tyyppiä tai sitä ei voi muuten avata. Mahdollisesti sql-lauseessa on jotakin vikaa (tällöin tiedoston avaaminen on ok)'; die(); } ?>
Tämä olisi varmaan mennyt tuon ensimmäisen vinkkisi toisena listauksena, varsinkin kun näyttää siltä, että tätä ei julkaista...
Aihe on jo aika vanha, joten et voi enää vastata siihen.