domenica 25 gennaio 2015

Ado.Net Excel To Csv creare un file Csv da un file Excel tramite VB.Net e C#

Si riporta l'articolo scritto per il sito http://www.iprogrammatori.it/articoli/programmazione/art_creazione-di-un-file-csv-da-un-file-exce_1371.aspx


In questo articolo vedremo come realizzare una procedura  o meglio una “Windows Application” che dato un file Excel genera un file di tipo CSV.
La particolarità di questo progetto è una parte dinamica, nel senso che può essere utilizzata  per la versione di Excel 2007 o inferiore, e che la lettura delle colonne avviene tramite indice delle colonne (le lettere, a, b, c, d).
Prima di tutto bisogna creare un file Excel, nella prima colonna precisamente in A1 mettete la dicitura Nome, nella seconda colonna (B1) mettete Cognome, e nella terza colonna (C1) mettete età.
A questo punto valorizzare i vari campi al di sotto, inserendo i dati a vostro piacimento.
Ora non ci resta che aprire Visual Studio 2010 e  realizzare tale procedura.

Creazione del progetto



Si crea un nuovo progetto di tipo “Windows Application” tramite il linguaggio di programmazione di proprio interesse (VB.Net  o C#) a questo punto, nella form inseriamo quattro controlli Label, quattro controlli TextBox ed un pulsante, il tutto come illustrato in figura 1.


Figura 1 – la form con i vari controlli

Valorizziamo i vari campi con i dati di nostro interesse.
La prima casella conterrà il file CSV da generare, la seconda casella il percorso e nome del file Excel dove estrapolare i dati, il terzo campo, il nome del foglio su cui leggere le informazione, mentre nel quarto ed ultimo campo le colonne su cui leggere i dati.
Ora passiamo in visualizzazione codice facendo doppio sul pulsante con la dicitura "Genera", in modo che vi viene visualizzato l’evento del pulsante.
Qui di seguito si riporta il codice dell’evento click del pulsante.


VB.Net

Private Sub BtnGenera_Click(sender As System.Object, e As System.EventArgs) Handles BtnGenera.Click

        EseguiElaborazione(TxtFileExcel.Text, TxtCsv.Text, TxtFoglio.Text, TxtColonne.Text)

        MessageBox.Show("Operazione completata")

    End Sub

 C#

private void BtnGenera_Click(object sender, EventArgs e)

        {

           

            EseguiElaborazione(TxtFileExcel.Text, TxtCsv.Text, TxtFoglio.Text, TxtColonne.Text);

            MessageBox.Show("Operazione completata");

 

        }


Come si vede dal codice, viene eseguita una funzione ,a cui sono passati i vari parametri, riguardante i valori inseriti nelle varie caselle di testo.
Di seguito elenchiamo le varie funzioni.
La funzione qui di seguito, permette di generare il file Csv passando il percorso e nome del file e come secondo parametro il testo da scrivere.


VB.Net

Private Shared Sub CreaFileCsv(NomeFileCSV As String, Testo As String)

        Try

            Using ScriviFile As New System.IO.StreamWriter(NomeFileCSV, False)

 

                ScriviFile.WriteLine(Testo)

 

            End Using

        Catch ex As Exception

 

            Throw ex

        End Try

 

    End Sub

 

C#

private static void CreaFileCsv(string  NomeFileCSV, string  Testo)

        {

            try

            {

                using (System.IO.StreamWriter ScriviFile = new System.IO.StreamWriter(NomeFileCSV, false))

                {

                    

                    ScriviFile.WriteLine(Testo);

                }

 

            }

            catch (Exception ex)

            {

 

                throw ex;

            }

 

        }

 
La funzione qui di seguito, permette di rilevare il nome delle colonne o meglio i campi della select che andremmo ad eseguire per estrapolare i dati dal file Excel.
L’algoritmo prendendo il nome dagli indici delle colonne (a,b,c,etc) rileva tali campi.
 
VB.Net

Private Shared Function OttieniNomeColonne(pColonne As DataTable, LetteraColonna As String) As String

 

        Dim LettereExcel As String = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"

        '26

        Dim Colonne As String() = LetteraColonna.Split(","c)

        Dim NomeColonna As String = ""

        For ContaColonne As Integer = 0 To Colonne.Length - 1

            If ContaColonne > 0 Then

                NomeColonna += ","

            End If

            Dim Indice As Integer = -1

            If Colonne(ContaColonne).Trim().Length > 1 Then

                For ContaElementi As Integer = 0 To Colonne(ContaColonne).Length - 1

                    If ContaElementi > 0 Then

                        Indice += 25 + LettereExcel.IndexOf(Colonne(ContaColonne).Trim().Substring(ContaElementi + 1))

                    Else

                        Indice = LettereExcel.IndexOf(Colonne(ContaColonne).Trim().Substring(ContaElementi + 1)) + 1

 

                    End If

                Next

            Else

                Indice = LettereExcel.IndexOf(Colonne(ContaColonne).Trim())

            End If

            NomeColonna += pColonne.Columns(Indice).ColumnName.Trim()

        Next

 

        Return NomeColonna

    End Function

 

 

 

 

C#

private   string OttieniNomeColonne(DataTable pColonne, string  LetteraColonna)

        {

 

              string  LettereExcel = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"; //26

 

            string[] Colonne = LetteraColonna.Split(',');

            string  NomeColonna = "";

            for (int ContaColonne = 0; ContaColonne < Colonne.Length; ContaColonne++)

            {

                if (ContaColonne > 0)

                {

                    NomeColonna += ",";

                }

                int  Indice = -1;

                if (Colonne[ContaColonne].Trim().Length > 1)

                {

                    for (int ContaElementi = 0; ContaElementi < Colonne[ContaColonne].Length; ContaElementi++)

                    {

                        if (ContaElementi > 0)

                        {

                            Indice += 25 + LettereExcel.IndexOf(Colonne[ContaColonne].Trim().Substring(ContaElementi + 1));

                        }

                        else

                        {

                            Indice = LettereExcel.IndexOf(Colonne[ContaColonne].Trim().Substring(ContaElementi + 1)) + 1;

                        }

 

                    }

                }

                else

                {

                    Indice = LettereExcel.IndexOf(Colonne[ContaColonne].Trim());

                }

                NomeColonna += pColonne.Columns[Indice].ColumnName.Trim();

            }

 

            return NomeColonna;

        }



 Siamo giunti alla conclusione della stesura del codice, qui di seguito la funzione più importante, quella che ci permette di eseguire le query nel file di Excel ed estrapolare i dati.


 
VB.Net

 

Private Sub EseguiElaborazione(PercorsoFileExcel As String, PercorsoFileCsv As String, NomeFoglio As String, Colonne As String)

        Try

 

            Dim strConnectionString As String = ""

            If PercorsoFileExcel.Trim().EndsWith(".xlsx") Then

                strConnectionString = String.Format("Provider=Microsoft.ACE.OLEDB.12.0;Data Source={0};Extended Properties=" & ChrW(34) & "Excel 8.0;HDR=Yes;IMEX=1" & ChrW(34), PercorsoFileExcel)

            ElseIf PercorsoFileExcel.Trim().EndsWith(".xls") Then

                strConnectionString = String.Format("Provider=Microsoft.Jet.OLEDB.4.0;Data Source={0};Extended Properties=""Excel 8.0;HDR=Yes"";", PercorsoFileExcel)

            End If

            'mi connetto alla base dati

            Using ObJConnection As New OleDbConnection(strConnectionString)

                ObJConnection.Open()

 

                Dim DtrRecord As OleDbDataReader

                Dim DtaQuery As New OleDbDataAdapter("Select top 1 * from [" & NomeFoglio & "$]  ;", ObJConnection)

                Dim DttDati As New DataTable()

                DtaQuery.Fill(DttDati)

                'Rilevo l'intestazione delle colonne

                Colonne = OttieniNomeColonne(DttDati, Colonne)

                'Ottengo i dati dopo aver rilevato i nomi delle colonne

                Dim DbCommandQuery As New OleDbCommand("Select " & Colonne & "  from [" & NomeFoglio & "$]  ;")

                DbCommandQuery.Connection = ObJConnection

                DtrRecord = DbCommandQuery.ExecuteReader()

                Dim DttDatiRisultato As New DataTable()

                'Rendo le colonne di tipo string

                Dim lNomeColonna As String() = Colonne.Split(",")

                For Each Colonna As String In lNomeColonna

                    DttDatiRisultato.Columns.Add(Colonna, GetType(String))

                Next

                DttDatiRisultato.Load(DtrRecord)

 

 

                Dim TestoDaScrivere As String = ""

                For Each Elemento As DataRow In DttDatiRisultato.Rows

                    For ContaColonne As Integer = 0 To Elemento.ItemArray.Length - 2

 

 

                        TestoDaScrivere += Elemento(ContaColonne).ToString() & ";"

                    Next

                    If TestoDaScrivere.Substring(TestoDaScrivere.Length - 1, 1) = ";" Then

                        TestoDaScrivere = TestoDaScrivere.Substring(0, TestoDaScrivere.Length - 1)

                    End If

 

 

 

                    TestoDaScrivere += vbCr & vbLf

                Next

 

 

 

                CreaFileCsv(PercorsoFileCsv, TestoDaScrivere)

            End Using

        Catch ex As Exception

            Throw ex

        End Try

 

 

    End Sub

 

 

C #

        private   void EseguiElaborazione(string  PercorsoFileExcel, string PercorsoFileCsv, string NomeFoglio, string Colonne)

        {

            

            try

            {

                string strConnectionString = "";

                if (PercorsoFileExcel.Trim().EndsWith(".xlsx"))

                    strConnectionString = string.Format("Provider=Microsoft.ACE.OLEDB.12.0;Data Source={0};Extended Properties=" + (char)34 + "Excel 8.0;HDR=Yes;IMEX=1" + (char)34, PercorsoFileExcel);

                else if (PercorsoFileExcel.Trim().EndsWith(".xls"))

                {

                    strConnectionString = string.Format("Provider=Microsoft.Jet.OLEDB.4.0;Data Source={0};Extended Properties=\"Excel 8.0;HDR=Yes\";", PercorsoFileExcel);

                }

                //mi connetto alla base dati

                using (OleDbConnection ObJConnection = new OleDbConnection(strConnectionString))

                {

                    ObJConnection.Open();

                   

                    OleDbDataReader DtrRecord;

                    OleDbDataAdapter DtaQuery = new OleDbDataAdapter("Select top 1 * from [" + NomeFoglio + "$]  ;", ObJConnection);

                    DataTable DttDati = new DataTable();

                    DtaQuery.Fill(DttDati);

                    //Rilevo l'intestazione delle colonne

                    Colonne = OttieniNomeColonne(DttDati, Colonne);

                    //Ottengo i dati dopo aver rilevato i nomi delle colonne

                    OleDbCommand DbCommandQuery = new OleDbCommand("Select " + Colonne + "  from [" + NomeFoglio + "$]  ;");

                    DbCommandQuery.Connection = ObJConnection;

                    DtrRecord = DbCommandQuery.ExecuteReader();

                    DataTable DttDatiRisultato = new DataTable();

                    //Rendo le colonne di tipo string

                    string[] lNomeColonna = Colonne.Split(',');

                    foreach (var Colonna in lNomeColonna)

                    {

                        DttDatiRisultato.Columns.Add(Colonna, typeof(string));

                    }

                    DttDatiRisultato.Load(DtrRecord);

                   

                  

                    string TestoDaScrivere = "";

                    foreach (DataRow Elemento in DttDatiRisultato.Rows)

                    {

                        for (int ContaColonne = 0; ContaColonne < Elemento.ItemArray.Length - 1; ContaColonne++)

                        {

 

                            TestoDaScrivere += Elemento[ContaColonne].ToString()+ ";";

 

                        }

                        if (TestoDaScrivere.Substring(TestoDaScrivere.Length - 1, 1) == ";")

                        {

                            TestoDaScrivere = TestoDaScrivere.Substring(0, TestoDaScrivere.Length - 1);

                        }

 

 

                        TestoDaScrivere += "\r\n";

 

                    }

                   

                    CreaFileCsv(PercorsoFileCsv, TestoDaScrivere);

 

 

                }

            }

            catch (Exception ex)

            {

 

                throw ex;

            }

 

 

 

 

        }





Conclusioni

L’articolo ha fornito al lettore delle ottime indicazioni di come creare un programma di tipo Windows Application, flessibile e dinamico per la lettura dei dati da un file di tipo Excel, di qualsiasi versione e generare un file di tipo CSV.
Tramite le classi di Ado.Net e precisamente di OleDB, possiamo lavorare sui file di tipo Excel.
Tramite la parola Download è possibile scaricare il progetto utilizzato in questo articolo.

venerdì 16 gennaio 2015

Il provider 'Microsoft.ACE.OLEDB.12.0' non è registrato nel computer locale

Nel caso che si sviluppano applicazioni .Net, in ambiente a 64 bit che si interfacciano con Office 2007 o versione successiva, bisogna installare il seguente componente http://www.microsoft.com/en-us/download/details.aspx?id=23734 mentre per la versione in n italiano qui  http://www.microsoft.com/it-it/download/details.aspx?id=23734 il compoenete che permette di  risolvere il problema.

mercoledì 14 gennaio 2015

.Net select excel error dbnull date

Se abbiamo un file Excel, con colonne di tipo data, può capitare che alcuni valori ritornano null, o meglio dbnull.
Per ovviare a tale problema, impostare nella stringa di connessione imex =1.

Qui di seguito si riporta un esempio di connessione

"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\MioFile.xlsx;Extended Properties="+ (char)34 + "Excel 8.0;HDR=Yes;IMEX=1"+ (char)34


martedì 13 gennaio 2015

asp net process start impersonate specific user

Nel caso che si vuole avviare un programma da Asp.net tramite il metodo Start della classe access, con uno specifico utente, tramite il metodo Start della classe Process.

Qui di seguito un esempio di codice.


 string Password = "MiaPassword";
        SecureString passwordCryptata = new SecureString();
        foreach (char c in Password )
            passwordCryptata .AppendChar(c);
        System.Diagnostics.Process.Start("Notepad.exe", "", "UserName", passwordCryptata , "Dominio");

lunedì 12 gennaio 2015

Javascript convert string to int

Qui di seguito un frammento di codice per convertire una variabile string in intero.


var Numero = "10";
parseInt(Numero);

domenica 11 gennaio 2015

VB.Net esportare un datatable in Excel

Qui di seguito si riporta un frammento di codice che dato un oggetto di tipo DataTable viene esportato in file Excel
Dim DttRisultato As DataTable = CreaDati()
      

        Dim attachment As String = "attachment; filename=FileName.xls"
        Response.ClearContent()
        Response.AddHeader("content-disposition", attachment)
        Response.ContentType = "application/vnd.ms-excel"
        Dim tab As String = ""
        For Each Colonna As DataColumn In DataTableRisultato.Columns
            Response.Write(tab + Colonna.ColumnName)
            tab = vbTab
        Next
        Response.Write(vbLf)
        Dim Conta As Integer
        For Each riga As DataRow In DataTableRisultato.Rows
            tab = ""
            For Conta  = 0 To DataTableRisultato.Columns.Count - 1
                Response.Write(tab & riga (Conta ).ToString())
                tab = vbTab
            Next
            Response.Write(vbLf)
        Next
        Response.End()

sabato 10 gennaio 2015

Linq add record in Select C#

Nel caso che vogliamo aggiungere un record o meglio un dato in un risultato select di linq, dobbiamo renderlo di tipo list e tramite il metodo Add aggiungere i vari campi.
Qui di seguito un esempio di codice.
 var Risultato = (from Dati in Elaborazione  select new { Dati.NomeCampoA, Dati.NomeCampoB});
       
        if (Risultato != null)
        {
            
            var dati = Risultato.ToList();
            dati.Add(new { NomeCampoA= "Valore", NomeCampoB= "Valore" });
             
        }

venerdì 9 gennaio 2015

Recensione libro: Il Potere del linguaggio




Scheda del libro:

Autore:
Jenny Nabben
Prezzo: Euro 19,90
Caratteristiche:
216  pag - 14x21,5
Numero Edizione:
1
Anno di edizione: Settembre  2014
ISBN: 9788868950811
Lingua: Italiano
Rilegatura Brossura

Novità editoriale per la casa editrice LSWR http://www.edizionilswr.it  nata da pochi mesi ma con una vasta esperienza da parte dei fondatori. Il libro che vi presento oggi è la traduzione in italiano di un bellissimo manuale sulla comunicazione con interessanti indicazioni su questa tematica.

Il manuale il potere del linguaggio http://www.edizionilswr.it/libri/il-potere-del-linguaggio/  è adatto a tutti coloro che sono interessati al mondo della comunicazione e che vogliono migliorare la loro capacità nei rapporti interpersonali.

L’autore del libro è Jenny Nabben, uno dei massimi esperti internazionali in ambito di comunicazione e di coaching con diversi titoli acquisiti.

Un libro con numerosi immagini per aiutare il lettore a comprendere l’argomento che si sta trattando, ma al tempo stesso con una serie di esempi e spiegazioni per fornire tutte le informazioni di cui si ha bisogno.

Un aspetto da tenere conto di questo manuale anche la parte relativa alla programmazione neuro linguistica (PNL) fornendo interessanti spunti in ambito neurologico.

Un altro aspetto positivo che mi ha colpito è che in ogni capitolo (tranne nel primo ) troviamo esercizi che il lettore potrà svolgere per mettere in pratica ciò che ha letto, oltre naturalmente ad una serie di casi reali sull’argomento trattato.

Questi due aspetti danno ulteriore valore aggiunto ad un manuale che illustra in maniera semplice e chiara il modo di comunicare con la gente. Seppur il manuale è piccolo ( circa 200 pagine) fornisce interessanti spunti al lettore che vuole acquisire o migliorare i rapporti interpersonali.



Qui di seguito si riportano i vari capitoli del libro.

1)  Influenzare è importante.
2) Influenzare stili diversi di presonalità.

3) Tutti parlano ma nessuno ascolta.

4)  Le parole cambiano la mente: Il lnguaggio dell'influenza.

5) Perchè le storie cambiano il mondo.

6) Influenzare in ogni canale.

7) Influenzare sotto pressione.



Conclusioni
Un manuale scritto molto bene, che fornisce ottimi spunti sul mondo della comunicazione con esercizi per mettere in pratica ciò che si è letto.

giovedì 8 gennaio 2015

NiDays 2015 evento sulla progettazione dei sistemi



Nuovo appuntamento per tutti coloro che lavorano o che utilizzano strumenti per la progettazione dei sistemi.
Il 12 marzo 2015, a Milano, si svolgerà l'evento NiDays qui http://italy.ni.com/nidays la notizia, in cui verranno illustrate le ultime novità, e tecniche sui prodotti NiDays.
L'evento è gratuito ed aperto a tutti, per partecipare bisogna registrarsi nella pagina ufficiale dove è possibile consultare l'agenda.
Qui http://italy.ni.com/nidays tutte le informazioni.

mercoledì 7 gennaio 2015

Recensione libro: Programmare per Windows con WPF 4.5.1

Scheda del libro:
Autore:
Alessandro Del Sole
Prezzo: Euro 44,90
Caratteristiche:
608 pag - 17x24
Numero Edizione:
1
Anno di edizione: Settembre  2014
ISBN: 9788868950439
Lingua: Italiano
Rilegatura Brossura



Da qualche anno la programmazione di applicazioni per Windows, è cambiata, infatti possiamo realizzare applicazione con la tecnologia Windows Presentation Foundation (WPF), un nuovo modo di realizzare applicazioni alternativo a quello tradizionale.
Per coloro che hanno o sviluppano con la tecnologia Silverlight, troveranno facile il passaggio a questo tipo di tecnologia, dove alla base di tutto c’è il linguaggio XAML che fa parte appunto di Silverlight.

Il manuale Programmare per Windows con WPF 4.5.1 guida completa http://www.edizionilswr.it/libri/programmare-per-windows-con-wpf-4-5-1/ edito della casa editrice Edizioni LSWR http://www.edizionilswr.it/  fornisce un valido strumento per imparare questa tecnologia.

I numerosi capitoli (23) forniscono tutte le indicazioni di cui un programmatore necessita per avvicinarsi a questo nuovo modo di programmare, un manuale con numerosi esempi scritti con il linguaggio di programmazione Visual Basic Net e C#, permettendo in questo modo di coprire la maggior parte dei programmatore sulla tecnologia .Net.
In questo manuale troviamo tutti gli aspetti di base per la programmazione WPF, argomenti quali, l’architettura della tecnologia, i controlli base e non ,  la gestione della grafica e delle animazioni,  la gestione di una fonte dati, la creazione di un controllo, il debug, il riconoscimento vocale e tanto altro.
Un ottimo manuale indispensabile per coloro che si stanno avvicinando a questo modo di sviluppare applicazioni.

L'autore del libro è Alessandro Del Sole (qui http://community.visual-basic.it/Alessandro/ il suo blog) uno dei massimi esperti nazionali ed internazionali in ambito di Visual Basic, nonchè speacker e membro della Community Visual-Basic.it .



Qui di seguito si riportano i vari capitoli del libro. el libro.
1)  Cos'è Windows Presentation Foundation.
2)  Definire l'interfaccia: XAML e il designer di Visual Studio.
3)  Organizzare l'interfaccia: I Panel (contenitori di controlli)
4)  Controlli comuni in WPF
5)  Riempimento, risorse, stili e control template.
6)  La classe application e il ciclo di vita delle applicazioni.
7)  Menu, barre degli strumenti, ribbon.
8)  Immagini, grafica 2D, trasformazioni, Animazioni.
9)  Runtime: routed event, dependency property, command.
10)  Creare controlli utente personalizzati.
11)  Data-binding: Primo contatto e drag'n'drop.
12)  Data Binding su misura e conversione dei dati.
13) Validazione dei dati e notifiche di cambiamento.
14) Data-Binding di collezioni di oggetti e data template.
15) Strumenti di debug.
16) Multimedia e riconoscimento vocale.
17) Gestire documenti fissi e dinamici.
18) Stampa.
19) Threading e programmazione asincrona.
20) Interoperabilità con Windows Forms
21) Architettura: Il pattern model-view.viewmodel.
22) Riutilizzo del codice con altre piattaforme.
23) Programmare la task bar di Windows 7 e 8.X
24) Distribuzione di applicazioni WPF


Conclusioni
Il libro fornisce tutti gli elementi che permettono al lettore di acquisire la piena autonomia nello scrivere applicazioni con tecnologia WPF tramite il linguaggio Visual Basic Net e C#. Numerosi esempi ed immagini che fanno di questo manuale un ottimo strumento di apprendimento.

mercoledì 24 dicembre 2014

FT: B uon Natale e felice anno nuovo



L'anno si sta concludento, e come ogni anno, questo è il Fuori Tema che più desidero, freddo, the, pioggia, ferie (anche se quest'anno sono poche) e relax, periodo di godimento.

Quest'anno ho dedicato poco tempo al blog, un punto di riferimento per molti programmatori, che di volta in volta inviano l'email con apprezzamenti che mi danno la forza per andare avanti.

Molto tempo l'hoo dedicato ad un progetto sociale tecnologico che ho realizzato nella mia città, Roma, ma prometto per il prossimo anno di essere più attivo.

Qualche giorno di riposo e poi riprendo al lavoro, sperando che il 2015 porti tante cose buone.

Mi fermo qualche giorno e poi dopo le feste riprendo a postare :-).

Auguri a tutti voi programmatori ed affezionati lettori del mio blog, un Natale pieno di amore, ed un 2015 di tante soddisfazioni.

Auguri a tutti voi.

P.S: L'immagine l'ho preso dal profilo del mio amico "Claudio" :-)



domenica 21 dicembre 2014

App Shoppalo una guida per gli acquisti





Shoppalo è una guida agli acquisti che aggrega i cataloghi di centinaia di negozi online.
Con l'App di Shoppalo, si può trovare il prezzo di un prodotto e l'offerta più conveniente rapidamente dal proprio smartphone Android.
Nell'App sono presenti  le guide agli acquisti per orientarsi sulle tipologie di prodotti che si vogliono comprare.
Inoltre si possono richiedere consigli per gli acquisti al Team di Shoppalo dalla sezione Domande/Risposte dell'App.
Nell'App sono implementate tutte le funzionalità presenti sul sito ufficiale:
http://www.shoppalo.it
Qui le caratteristiche più importanti:
- Ricerca testuale e vocale dei prodotti
- Ricerca dei prodotti tramite navigazione per categoria merceologica
- Autocompletamento dei termini di ricerca per aiutare la digitazione
- Archiviazione automatica delle ultime ricerche effettuate in Cronologia
- Filtro delle offerte per marca e prezzo
- Nelle offerte visualizziamo: descrizione, metodi di pagamento, tempi e spese di consegna
- Pubblicazione domande per chiedere consigli su un prodotto che si vuole acquistare, consigli sulla manutenzione, per risolvere dei problemi, ecc
- Possibilità di rispondere alle domande degli utenti per fornire i propri consigli e mettere a disposizione la propria esperienza
- Guide agli acquisti
Link alla scheda su Google Play:
https://play.google.com/store/apps/details?id=it.shoppalo.android

giovedì 11 dicembre 2014

VBA importare i dati in un foglio Excel

Si riporta l'articolo scritto per il sito http://www.iprogrammatori.it/articoli/programmazione/art_importare-dati-in-un-foglio-excel-da-vba_1364.aspx


In questo articolo vedremo come realizzare una procedura in VBA (Visual Basic Application), la quale carica i dati da un file Excel, e li inserisce in un foglio Excel in cui viene eseguita la query.
Si crea un file Excel, nel quale andremo a rilevare i dati, questo file Excel avrà due colonne, in A1 avremo l’intestazione Nome, mentre in B1  il valore Cognome.
Inserite a vostro piacimento i dati.
Aprite un nuovo file Excel il quale caricherà i dati dal file precedentemente creato. Dopo aver aperto il programma Microsoft Excel, tramite la voce di menu “Sviluppo” fate click sul pulsante “Visual Basic” .
Aggiungere al progetto un riferimento alla libreria “Microsoft ActiveX Data Object 2.8 library” in questo modo possiamo utilizzare ADO, per aggiungere tale riferimento, fare click sulla voce “Riferimenti” e successivamente mettere la spunta a tale voce.

Stesura del codice


Si creano le varie funzioni per la gestione dei dati.
La seguente funzione permette di rilevare la stringa di connessione del file Excel dove rilevare i dati.

''''''''''''''''''''''''''''''''''''''''''''''''''
'Funzione che restituisce il pecorso della fonte dati dove rilevare i dati
'
'''''''''''''''''''''''''''''''''''''''''''''''''''
Function OttieniConnectionStringDatiOrigine() As String
Dim percorso As String
percorso = Worksheets("Foglio1").Range("B2")
Dim ConnectionString As String
 ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;" & _
                        "Data Source=c:\Dati.xlsx;" & _
                        "Extended Properties=""Excel 8.0;HDR=Yes;IMEX=1;MaxScanRows=1;"""
OttieniConnectionStringDatiOrigine = ConnectionString
End Function


Ora si crea la funzione Macro, ossia la “Sub” che verrà richiamata dalla maschera “Macro” di Excel, che avvia la procedura di importazione dati.
La procedura riportata qui di seguito, permette di avviare il caricamento, dopo aver rilevato i dati dal file Excel, scorre il singolo recordSet per inserirlo nelle prime due celle del file Excel di Destinazione.
Qui di seguito il codice completo di tale procedura.

Option Explicit
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
'Macro per importare i dati
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
Sub ImportaDati()
On Error GoTo errore
'Oggetti per estrapolare i dati
 Dim ConEstrapolaDati As New ADODB.Connection
 ConEstrapolaDati.Open OttieniConnectionStringDatiOrigine
 'RecordSet per il rilevamento dei dati
 Dim RecEstrapolaDati As New ADODB.Recordset
 Dim QuerySql As String
 QuerySql = "Select Nome, Cognome From [Foglio1$]"
 RecEstrapolaDati.Open QuerySql, ConEstrapolaDati, adOpenKeyset, adLockPessimistic, 1
'verifico se sono presenti dati
If RecEstrapolaDati.RecordCount > 0 Then
    If Not RecEstrapolaDati.EOF Then
        Dim Riga As Integer
        Riga = 2
        'Inserisco i valori per ogni colonna
        Dim ContaRighe As Integer
        For ContaRighe = 0 To RecEstrapolaDati.RecordCount - 1
            Cells(Riga, 1) = RecEstrapolaDati(0) 'nome
            Cells(Riga, 2) = RecEstrapolaDati(1) 'cognome
            Riga = Riga + 1
            RecEstrapolaDati.MoveNext
        Next ContaRighe
        If RecEstrapolaDati.State = adStateOpen Then
            RecEstrapolaDati.Close
        End If
        If ConEstrapolaDati.State = adStateOpen Then
         ConEstrapolaDati.Close
        End If
        Set RecEstrapolaDati = Nothing
        Set ConEstrapolaDati = Nothing
        Exit Sub
    End If
Else
    MsgBox "Non ci sono dati da caricare.", vbInformation, "ImportaDati"
End If
        RecEstrapolaDati.Close
        ConEstrapolaDati.Close
        Set RecEstrapolaDati = Nothing
        Set ConEstrapolaDati = Nothing
 Exit Sub
'Gestione errore
errore:
    MsgBox "ERRORE: " & Err.Description, vbCritical + vbOKOnly, "ImportDati"
     On Error GoTo 0
End Sub


Il codice crea due oggetti, uno di tipo Recordset, che permette la gestione dei dati, mentre l'oggetto Connection, ha il compito di gestire la connessione al file Excel.
Tramite l'oggetto CELLS di VBA, andiamo inserire il valore del recordset nella cella.
Da notare la query SQL, nella quale il nome della tabella, o meglio del foglio è indicato tra parentesi quadrate con il simbolo dollaro.


Conclusioni


L’articolo ha preso in esame un caso reale che si può verificare, uno scenario di realizzare procedure interne al pacchetto Office, ed in particolare di Excel per l’auto caricamento dei dati.
La procedura in VBA si può estendere e renderla più flessibile.

Tramite il link download potete scaricare i file di esempio.

lunedì 8 dicembre 2014

Recensione libro: Sviluppare Universal app per Windows Phone e Windows con XAML e C#





Scheda del libro:

Autore:
Matteo Pagani
Prezzo: Euro 44,90
Caratteristiche:
608 pag - 17x24
Numero Edizione:
1
Anno di edizione: Settembre  2014
ISBN: 9788868950415
Lingua: Italiano
Rilegatura Brossura

Per gli sviluppatori la nuova piattaforma Windows 8.1 e Windows Phone 8.1 ha portato molte novità nello sviluppo di tali applicazioni. Questa nuova architettura ha cambiato anche per alcuni aspetti il modo di realizzare applicazioni, al momento sono pochi i libri in commercio che illustrano lo sviluppo di applicazioni Universal APP, un libro che ritengo interessante è quello della casa editrice LSWR http://www.lswr.it che nel mese di settembre 2014 ha pubblicato un libro fatto molto bene su tale sviluppo.

Il libro Sviluppare Universal App per Windows Phone e Windows con XAML e C# http://www.lswr.it/libro/sviluppare-universal-app-per-windows-phone/ fornisce interessanti indicazioni su tale sviluppo fornendo delle valide basi. Il libro è scritto da Matteo Pagani, uno tra gli esperti in ambito di Windows Phone e MVP qui http://www.qmatteoq.com/ il suo blog .

Ma vediamo in dettaglio i vari capitoli di questo libro.

Come in ogni buon libro che si rispetti, il primo capitolo viene fornita al lettore una valida introduzione sulle due piattaforme, quella relativa a Windows 8.1 per dispositivi PC e quella per mobile. Informazione utile per chi si avvicina per la prima volta a questo mondo.

Nel secondo capitolo, si entra nel vero sviluppo delle applicazioni, nelle prime pagine l’autore del libro fornisce indicazioni sulla struttura del progetto, i vari file e l’architettura per poter aver una valida base nello sviluppo.

Nel capitolo tre, si passa all’utilizzo dei controlli che troviamo in questa nuova versione di Windows. Nel capitolo troviamo diversi esempi di codice accompagnati da altrettante immagini. Nel capitolo troviamo esempi sul controllo Layout, Grid, Canvas, VariableSizedWrapGrid, ScrollViewer, Controllo Border, Textblock, e tanti altri. Un capitolo che fornisce al lettore una valida base ed autonomia nell’utilizzare i vari controlli.

Il capitolo quarto affronta argomenti importanti e che ogni sviluppatore deve conoscere. Nelle prime pagine viene illustrato come gestire la visualizzazione della nostra applicazione nel dispositivo, tenendo conto della risoluzione, e dimensioni, aspetti importanti da non sottovalutare. Continuando nella lettura del capitolo, si cambia argomento affrontando la navigazione tra pagine, un aspetto molto conosciuto per chi in passato ha già programmato con la tecnologia Silverlight. La parte conclusiva del capitolo riguarda il ciclo di vita del programma.

Il quinto capitolo, riguarda aspetti che ogni programmatore deve prima o poi affrontare la gestione dei file, ed il salvataggio dei dati in una base dati. Nel capitolo troviamo interessanti esempi di codice che guidano il lettore passo dopo passo nel saper gestire i file e le cartelle. Nel capitolo troviamo esempi di codice per la gestione dello storage, sqllite e le impostazioni.

Nel capitolo sesto, troviamo esempi di codice mirati al web, in particolare upload dei file, l’utilizzo di internet, utilizzare Json, la gestione dei Rss ed altri interessanti esempi di codice.

Con il capitolo 7, si passa ad alcuni aspetti che è bene sapere anche se a volte non si utilizzano, in particolare nel capitolo sono riportati esempi sulla geo localizzazione, il controllo Mapcontrol, il controllo bing maps, i sensori di movimento, il bluetooth.

Nel capitolo ottavo, vediamo come interagire con il sistema, un aspetto importante per la condivisione dei contenuti. Tra i numerosi esempi, vedremo come inviare un sms, impostare un appuntamento nel calendario, inviare una email, aggiungere eliminare o modificare un contatto e tanti altri esempi. Un capitolo che illustra in maniera esaustiva l’argomento trattato.

Il nono capitolo, l’autore del libro affronta in maniera dettagliata e con numerosi esempi di codice ed immagini l’argomento multimedialità, in particolare la gestione dei video, l’audio, l’utilizzo della fotocamera, tanti aspetti che possono tornare utile durante lo sviluppo della nostra applicazione.

Nel capitolo decimo, il lettore al termine del capitolo sarà in grado di utilizzare in maniera autonoma e senza problemi la gestione delle notifiche. In questo capitolo sono riportati numerosi esempi di codice, che guideranno passo per passo l’utente alla gestione delle notifiche.

Nel penultimo capitolo (11) viene fornita al lettore le basi per l’utilizzo di operazioni in background.

L’ultimo capitolo, (12) anche se è molto breve affronta diversi aspetti della pubblicazione. Un capitolo che fornirà al lettore quella conoscenza che gli permetterà di rendere la propria applicazioni accessibile a tutti gli utenti, pubblicandola nello store.





Qui di seguito si riportano i vari capitoli del libro. el libro.

1)  Introduzione alle Universal Windows APP.
2) Il primo proetto e i concetti base di XAML e C#.

3) I contorlli di Windows e Windows Phone.

4)  I concetti fondaimentali: Risoluzioni, navigazione, e ciclo di vita.

5) Accesso ai dati: File, Database e impostazioni.

6) Accesso ai dati: Interagire con la rete.

7) Interagire con il mondo reale.

8) Integrarsi con il sistema: Contratti ed estensioni.

9) Sviluppare applicazioni multimediali.

10) Tile e notifiche.

11) Multitasking: Effettuare operazioni in background.

12) Pubblicare un'applicazione sugli store.





Conclusioni
   
Un libro fondamentale per chi si avvicina alla programmazione per Windows 8.1 in particolare per il mobile. Un libro che fornirà al programmatore quella preparazione e conoscenza di base richiesta per lo sviluppo di applicazioni. Il manuale affronta in maniera esaustiva e completa l'argomento trattato. Un libro che ritengo fondamentale e che non deve mai mancare in una libreria di un buon programmatore.

martedì 2 dicembre 2014

Conferenza Esri Italia 2015

alt


Ritorna l'appuntamento più importante dell'anno, la conferenza Esri Italia, che si terrà il 15 e 16 aprile 2015 presso Ergife Palace Hotel di Roma.

L'evento vuole fare il punto della situazione sul GIS, riportare i vari casi di successo e le novità del momento.

L'evento è aperto a tutti ed è gratuito, per maggiori informazioni ed iscrizioni visitate il seguente sito http://www.esriitalia.it/eventi/conferenza-italiana-utenti-esri/conferenza-esri-italia-2015.html