Configurazioni per importare da Excel | |||
Codificare nella Definizione profili il profilo di importazione. Codificare nella Definizione schema tabella esterne il nome della tabella (identificatore univoco) e il nome del file XLS da cui importare, indicando come Tipo tabella "Jet o altri Jet ISAM" e come Stringa di connessione "EXCEL 8.0;HDR=No;IMEX=1" o "Excel 12.0;HDR=No;IMEX=1" (senza doppi apici). La direttiva "IMEX=1;" indica al driver Excel ISAM di usare la modalità Import, la quale utilizza i parametri di registro di Windows descritti più sotto. Nell'Elenco campi si definiscono nell'ordine i nomi dei campi F1, F2, F3, F4, ... corrispondenti alle colonne dell'area da importare. I campi saranno tipizzati in base al contenuto dei dati in ogni singola colonna. Nella Impostazione Import/Export si crea la corrispondenza tabelle col nome della tabella di Business (da scrivere) e la tabella esterna (file XLS); nella colonna Clausola FROM si indica ad esempio "[NomeFoglio$A1:E100]" dove va indicato esplicitamente il nome del foglio e l'area in cui leggere i dati da importare. Ovviamente il numero delle colonne selezionate deve corrispondere al numero dei campi definiti nello Schema tabelle esterne. Per quanto riguarda le righe, invece, indicare un range di righe sufficientemente ampio per evitare che import successivi con più dati non importino tutti i record. Le eventuali righe vuote finali non vengono importate. Se nella prima righa sono indicati i nomi delle colonne scartare la prima righa dal range di selezione (ad esempio [NomeFoglio$A2:E100]).
Modifica alla chiave di registro Sulla macchina in cui si esegue l'importazione occorre modificare le seguenti opzioni di registro sotto la cartella HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Jet\3.5\Engines\Excel (per Excel 97) e sotto la cartella HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Jet\4.0\Engines\Excel (per Excel 2000 e successive versioni) NB: per le macchine a 64bit tale percorso si trova sotto:
ci possono essere altri punti a seconda della versione di Office, per esempio
FirstRowHasNames , indicando il valore '00' al posto di '01' (significa che nella prima riga del foglio Excel ci sono dati significativi e non i titoli di colonna):
Modificare il valore in '00':
TypeGuessRows , indicando il valore '0' al posto di '8' (comanda al driver di scandire tutte le righe per decidere il tipo di dato in una colonna, anziché scandire solo le prime 8 righe; questo può risultare in un maggiore impegno di tempo durante l'import di dati, ma esclude errori di conversione):
Modificare il valore in '0':
ImportMixedTypes , lasciare il valore predefinito 'Text' (indica al driver di convertire i dati letti in testo se sono presenti dati misti, ad es. valori numerici, date, testo, ...):
Nelle nuove versioni l'opzione del registro di windows per segnalare se considerare la prima riga del foglio di EXCEL come intestazione di colonna o meno, non viene più letta dal registro, se non definito con l'apposito parametro nella stringa di connessione, la prima riga del file viene considerata sempre come 'intestazione di colonna' ed i dati partono sempre dalla riga 2. Per indicare come considerare la prima riga occorre passare un parametro aggiuntivo HDR=Yes o HDR=No nella stringa di connessione: con HDR=No il nome delle colonne del datatable sarà F1, F2, F3, diversamente il nome viene preso dalla cella della prima riga del foglio di excel, per esempio "Excel 8.0;HDR=Yes;IMEX=1" o "Excel 12.0;HDR=Yes;IMEX=1". Lanciando un import da excel xlsx potrebbe verificarsi l'errore 'Il provider 'Microsoft.ACE.OLEDB.12.0' non è registrato nel computer locale.', questo probabilmente perchè l'installazione di office non ha installato il componente in oggetto, installare i seguenti componenti http://www.microsoft.com/en-us/download/details.aspx?id=23734. |