View Full Version : [PHP] Cella di excel che in MySql sballa!!!
In un foglio di excel ho una colonna in cui inserisco dei valori dal formato: percentuale - 2 posizioni decimali, del tipo:
22,00%
23,49%
etc.
Non posso cambiare formato in quanto è frutto di un copia incolla che mi incasinerebbe tutto se dovessi modificarlo.
Mediante script (utilizzo la classe ExcelReader (http://free-script.it/post/Script_php_Leggere_file_xls_di_excel_con_php-39.htm)) popolo il db MySql, ma non ritrovo questi valori! :(
Con l'esempio che ho riportato otterrei:
0.22%
0.23% (fregandosene delle cifre decimali).
La variabile è di tipo varchar, ma ho anche provato decimal (10,2) (eliminando prima il segno "%") ma non cambia nulla!
Possibile che non possa memorizzare la cifra esatta che ho sul foglio di excel?
Grazie per un'eventuale dritta.
packllama
25-02-2009, 12:34
posta lo script, può darsi che venga interpretato in qualche modo strano.
posta lo script, può darsi che venga interpretato in qualche modo strano.
Molto semplicemente:
require_once 'CARTELLA_LAVORO/reader.php';
$data = new Spreadsheet_Excel_Reader();
$data->setOutputEncoding('CP1251');
$data->read('CARTELLA_LAVORO/file.xls');
error_reporting(E_ALL ^ E_NOTICE);
for ($i = 1; $i <= $data->sheets[0]['numRows']; $i++)
{
...
$valore1= "".$data->sheets[0]['cells'][$i][2]."";
...
}
Per tutte le altre colonne del file di excel nessun problema (hanno però valore diverso da percentuale - 2 cifre decimali)
packllama
25-02-2009, 13:02
Guarda mi sono scaricato la classe e la sto controllando.
Ho visto che viene dichiarato un array con i possibili tipi di numeri, ma non c'è il tipo 2 interi + 2 decimali + % , bensì 1 solo intero.
Puoi provare a leggere un file excel che al più contenga valori di 1 intero e 2 decimali + il simbolo %? Così vediamo se il problema è quello lì, non vorrei che non riconoscesse il dato presente nella cella perchè non corrisponde ad alcun elemento dell'array dei tipi possibili.
Fammi sapere
Guarda mi sono scaricato la classe e la sto controllando.
Ho visto che viene dichiarato un array con i possibili tipi di numeri, ma non c'è il tipo 2 interi + 2 decimali + % , bensì 1 solo intero.
Puoi provare a leggere un file excel che al più contenga valori di 1 intero e 2 decimali + il simbolo %? Così vediamo se il problema è quello lì, non vorrei che non riconoscesse il dato presente nella cella perchè non corrisponde ad alcun elemento dell'array dei tipi possibili.
Fammi sapere
Grazie per l'aiuto innanzitutto :)
Ho provato ad inserire nel foglio di excel:
2,00% ottenendo nel db 0.02%
2,31% ottenendo nel db 0.02%
200,31% ottenendo nel db 20,00%
Mistero! :(
packllama
25-02-2009, 14:34
Spezziamo il problema. Prova a fare un echo dei risultati ottenuti direttamente dalla funzione reader, come è descritto nella pagina che hai linkato prima (che fa un semplice echo).
Vedi se i risultati sono fedeli. Se si, il problema è nelle impostazioni del DB o nello script che popola il DB (insert into ecc.ecc.). Se invece continui ad avere il problema, c'è da continuare ad esaminare la classe.
::edit::
ripensandoci, copiati tutto lo script che c'è in quella pagina, perchè ho visto che fa anche in modo di visualizzare tutti gli errori, magari ti tira fuori qualche warning sul formato dei dati
::fine edit::
Spezziamo il problema. Prova a fare un echo dei risultati ottenuti direttamente dalla funzione reader, come è descritto nella pagina che hai linkato prima (che fa un semplice echo).
Vedi se i risultati sono fedeli.
Anche solo stampandoli a video, il valore è sempre sballato!!!
Non ci sono warning nè errori!
A questo punto il problema è a monte!
packllama
25-02-2009, 16:14
Esatto.
Beh, il vantaggio è che almeno sai dove guardare.
Magari ci metterò un po' a risponderti perchè dovrò guardarmela bene la classe, più che altro spero di riuscirci! Nel frattempo dacci un'occhiata anche tu, tanto è tutto codice php dovresti capirlo bene.
saludos!
Esatto.
Magari ci metterò un po' a risponderti perchè dovrò guardarmela bene la classe, più che altro spero di riuscirci! Nel frattempo dacci un'occhiata anche tu, tanto è tutto codice php dovresti capirlo bene.
Bè certo!
Grazie per l'aiuto :D
:help: Rispolvero il 3d perchè ho un altro problema simile.
Quello del valore % è ancora irrisolto, ma per il momento non mi preoccupa.
Nell'immediato ne ho un altro di problema! :(
In una riga di excel devo inserire dei valori del tipo ora.minuti per poi sommarli e mettere il risultato in un'altra cella.
Tutto ok, usando il formato [h].mm.ss.
Il punto è che sul db ci sono dei problemi se la somma è uguale o superiore a 24.00!!!
Es. 99.00.00 lo immagazzina come 10:28:16 (tipo varchar). :muro: :mbe:
Non ci ho capito molto leggendo la classe, dite che è lo stesso problema del formato: percentuale - 2 posizioni decimali, che non è previsto dalla classe? :help:
Tnx!
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.