domenica 30 luglio 2017

Windows Presentation Foundation 4.7 utilizzo di Excel 2010

Si riporta l'articolo scritto per il sito http://www.iprogrammatori.it/articoli/programmazione/art_utilizzare-microsoft-excel-in-wpf-tramit_1505.aspx


In questo articolo introduttivo, si forniscono le basi per utilizzare Excel con le applicazioni di tipo WPF, un modo nuovo di sviluppare le applicazioni per Windows, il tutto tramite il linguaggio di programmazione VB.Net e C#.
L’utilizzo di creare file di tipo Microsoft Excel, avviene solo nel caso che è installato tale programma sul pc, perché si andranno ad utilizzare le varie classi messe a disposizione da questo programma.
Stesura del codice
Apriamo Visual Studio, e si si crea un nuovo progetto di tipo WPF, selezionando il linguaggio di programmazione di nostro interesse.
Inseriamo nella nostra form, un pulsante, con il quale scriveremo nell’evento click di tale pulsante il codice per aprire Excel ed impostare del testo nelle prime due celle (a1 e b1).

Qui di seguito si riporta il codice delle suddette operazioni per il linguaggio VB.Net e C#.


VB.Net

  Private Sub BtnExcel_Click(sender As Object, e As RoutedEventArgs) Handles BtnExcel.Click

        'Definisco un oggetto di tipo application excel

        Dim ApplExcel = Type.GetTypeFromProgID("Excel.Application")

        Dim objectExcel = Activator.CreateInstance(ApplExcel)

        objectExcel.Visible = True

        'Aggiungo una nuova cartella

        Dim objectWorkBook = objectExcel.Workbooks.Add()

        'Mi posiziono sul foglio attivo

        Dim objectSheet = objectWorkBook.ActiveSheet

        objectSheet.Cells(1)(1) = "Prova"

        objectSheet.Cells(2)(1) = "test"

    End Sub

C# 


private void BtnExcel_Click(object sender, RoutedEventArgs e)

        {

            //Definisco un oggetto di tipo application excel

            var ApplExcel = Type.GetTypeFromProgID("Excel.Application");

            dynamic objectExcel = Activator.CreateInstance(ApplExcel);

            objectExcel.Visible = true;

            //Aggiungo una nuova cartella

            var objectWorkBook = objectExcel.Workbooks.Add();

            //Mi posiziono sul foglio attivo

            var objectSheet = objectWorkBook.ActiveSheet;

            objectSheet.Cells[1][1] ="Prova";

            objectSheet.Cells[2][1] = "test";

 

        }





Come si è visto dal frammento di codice dopo aver creato un oggetto di tipo applicazione per Excel, si aggiunge un nuovo foglio, e ci si posiziona sul foglio attivo. A questo punto si va a scrivere nella prima colonna (a1) e poi nella seconda colonna (b1) sempre il tutto nella prima riga.

Conclusioni

L’articolo ha voluto fornire le basi per utilizzare Microsoft Excel nelle applicazioni di tipo WPF, il lettore potrà tramite l’utilizzo di VBA e Macro presenti in Excel, approfondire l’argomento, con ulteriori metodi ed utilizzo di proprietà. La programmazione del pacchetto Office, ed in particolare dei prodotti Microsoft Word e Microsoft Excel, è semplice e di facile intuizione.

venerdì 28 luglio 2017

MVC rilevare il nome del pulsante che esegue un metodo ActionResult

In MVC possiamo trovarci nella situazione che due o più pulsanti eseguono un certo evento, di tipo ActionResult.

Supponiamo di avere un evento come riportato qui di seguito:


  [HttpPost]
        public ActionResult MioEvento( string id, FormCollection collection)
        {
//codice
    }  


Mentre nella parte Viewer, ossia nella parte web, avremo il seguente codice

button class="button " id="btnSubmit" name="btnSubmit" value="btnSubmit"  Pulsante 1
button class="button " id="btndue" name="btndue" value="btndue"  Pulsante 2

Come si vede dal codice precedente, dobbiamo impostare nella proprietà value un valore identificativo.

Ora nell'evento MioEvento di tipo ActionResult, dovremmo utilizzare il seguente codice, per sapere se è stato fatto click sul pulsante submit.

  [HttpPost]
        public ActionResult MioEvento( string id, FormCollection collection)
        {

   
                     if (  Request.Form["btnSubmit"] != null)
                    {
                      //codice
                                             

                     }
 }

giovedì 27 luglio 2017

VBA funzione mod per sapere se un numero è pari o dispari

Se in Visual Basic Application (VBA) vogliamo rilevare se un numero è pari o dispari tramite la funzione mod del linguaggio possiamo saperlo, tramite il risultato uguale a 0.

L'esempio qui di seguito, verifica se il numero è pari.

If MioNumero mod 2 = 0 then
'pari
else
'dispari
end if

mercoledì 26 luglio 2017

Excel VBA get range value from visible cells after applying autofilter

Nel caso che stiamo utilizzando il linguaggio di programmazione Visual Basic Application, in Excel, e dopo aver effettuato un filtro vogliamo scorrere i record nelle celle visibile, il frammento qui di seguito, illustra tale tecnica.

Dove dopo aver applicato il filtro effettua un ciclo nelle celle visibili.

'Applico il filtro dove nella prima colonna è presente il valore "Ema".
ActiveWorkbook.Sheets(1).Range("$A$1:$A$64000").AutoFilter Field:=1, Criteria1:="Ema"


'Rilevo l'area dei dati visibili
 Dim DatiVisibili
Set DatiVisibili = ActiveWorkbook.Sheets(1).AutoFilter.Range.SpecialCells(xlCellTypeVisible)

'ciclo per ogni riga

 Dim rangeRighe As Range
        For Each rangeRighe In ActiveWorkbook.Sheets(1).AutoFilter.Range.SpecialCells(xlCellTypeVisible)
            'per ogni colonna rilevo il valore
            testoTrovato = rangeRighe.Cells(, 1)
            testoTrovato = rangeRighe.Cells(, 2)
            '---altre colonne se
        Next rangeRighe

martedì 25 luglio 2017

VBA Excel applicare un filtro a delle colonne diverso da vuoto

Nel caso che si sta utilizzando VBA per Excel, e si vuole effettuare un filtro a delle colonne, tramite la proprietà autofilter è possibile effettuare un filtro indicando la colonna ed il valore da filtrare.
Qui di seguito si riporta un frammento di codice nel quale si filtrano le colonne b1 fino alla e1
ed un range dal quale filtrare tutti i record che hanno nella prima colonna (b1) valori diverso da vuoto.


Range("B1:E1").Select
    Selection.AutoFilter
    ActiveSheet.Range("$B$1:$E$1000").AutoFilter Field:=1, Criteria1:="<>"

lunedì 24 luglio 2017

VBA Excel rilevare il totale dei record filtrati

Se vogliamo rilevare il totale dei record che abbiamo filtrato in un foglio Excel, ed il totale dei record presenti in un range, il frammento di codice qui di seguito illustra tale tecnica.


 MsgBox ActiveSheet.AutoFilter.Range.Columns(1).SpecialCells(xlCellTypeVisible).Count - 1 & " Di" & ActiveSheet.AutoFilter.Range.Rows.Count - 1

domenica 23 luglio 2017

Programma per la contabilità con soluzione Cloud

Logo TeamSystem Store



Oggi segnalo una soluzione software semplice e flessibile di fatturazione e contabilità basata su Cloud, accessibile da qualunque browser di navigazione internet.
Il software TeamSystem Reviso è una cosidetta piattaforma collaborativa che permette di  tenere la contabilità di piccole e medie imprese oltre che delle startup, da qualunque dispositivo o postazione visto che si utilizza tramite internet.
Un software che offre varie funzionalità anche in base al pacchetto scelto, ma di facile utilizzo e soprattutto con possibilità di interfacciarsi con altre applicazioni, tramite appunto l’uso delle API messe a disposizione del programma.
E’ possibile utilizzare per un periodo di prova (30 giorni) il programma, e poi decidere se continuare oppure no, scegliendo il piano tariffario in base alle proprie esigenze.
I piani offerti sono tre, tutti prevedono l’accesso a un numero illimitato di utenti della stessa azienda.
Il pacchetto “Starter” costa 25 euro + iva al mese, comprende 4.000 transazione, funzionalità quale vendite, progetti e contabilità, il pacchetto “Premium” a 50 euro + iva al mese, comprende 10.000 transazioni, e oltre alle funzionalità del pacchetto base è compreso la gestione dei centri di costo e cespiti e rate/risconti, infine il pacchetto “Enterprise” 90 euro + Iva al mese, comprende tutte le funzionalità e il numero di transazioni sono illimitate
L’interfaccia intuitiva e le varie funzionalità di questo prodotto offrono all’utente un software dalle  notevoli potenzialità. Questa piattaforma è pensata  per  chi vuole gestire con facilità la contabilità aziendale
Per maggiori informazioni, per provare il prodotto o altre informazioni visitate il seguente sito http://www.teamsystem.com/store/soluzioni-cloud/gestione-contabile/?utm_source=emanuelemattei-blogspot&utm_medium=blog&utm_campaign=affiliazione-blog&utm_content=reviso

sabato 22 luglio 2017

Asp.Net Jquery visualizzare un accordion

Nel frammento di codice qui di seguito, illustra una tecnica che riguarda la possibilità di visualizzare il terzo pannello a scomparsa di Jquery tramite il metodo show.
Il nome della classe content indica l'oggetto sul quale applicare il metodo, mentre eq(2) il singolo elemento, in questo caso, il terzo.


 $(".content").eq(2).show();

venerdì 21 luglio 2017

Asp.Net Jquery addclass e removeclass element html

Nel caso che vogliamo impostare la classe di uno stile ad un tag html tramite Jquery, utilizzando i metodi removeclass ed addclass ci permettono di rimuovere e togliere la classe di CSS.

L'esempio qui di seguito, illustra una tecnica che rilevato il terzo elemento di una serie di div con una classe denominata "frame" imposta uno stile.


 $(".frame").eq(2).removeClass('frame active').addClass('frame active');

giovedì 20 luglio 2017

Evento gratuito NIDAYS 2017

Torna l'evento più importante dell'anno riguardante i prodotti National Instruments.
A Milano, il 14 novembre 2017, si svolgerà l'edizione 2017 di NIDays, nel quale saranno presenti le novità dei prodotti Labview ed altri, oltre che casi di successo, laboratori e fare rete. Insomma un evento di grande importanza per tutti coloro che utilizzano o si vogliono avvicinare ai prodotti National Instruments.
Per iscrizioni e maggiori informazioni visitate il seguente sito https://events.ni.com/profile/web/index.cfm?PKwebID=0x23124b8d8&varPage=home

mercoledì 19 luglio 2017

UWP aggiungere un controllo dinamicamente XAML C#

Quando si realizzano applicazioni di tipo Universal Windows Platform, nel caso che si vuole aggiungere nella pagina XAML un controllo dinamicamente il frammento di codice qui di seguito illustra tale tecnica, aggiungendo un controllo di tipo texblock.

Il nome GridMaster, è il nome del controllo Grid della pagina XAML.


C#
   TextBlock txbTesto = new TextBlock();
            txbTesto.Margin = new Thickness(200, 500, 0, 0);
            txbTesto.Text = "Prova controllo runtime";
            gridMaster.Children.Add(txbTesto);

martedì 18 luglio 2017

Download free ebook More UWP Succinctly

More UWP Succinctly

Un nuovo libro gratuito in formato pdf o per dispositivi mobili in lingua inglese riguardante lo sviluppo delle Universal Windows Platform.
L'ebook di circa 140 pagine, illustra alcuni aspetti di tale architettura come per esempio accedere ai dati o la navigazione.
L'ebook scaricabile gratuitamente da questo sito https://www.syncfusion.com/resources/techportal/details/ebooks/More_uwp_succinctly

lunedì 17 luglio 2017

Programma gratuito di grafica Krita

Krita Logo

Se state cercando un valido programma gratuito per il disegno, il software di grafica Krita è un valido alleato.
Il software  è anche opensource e versione portatile sia per la versione a 32 bit che a quella 64 bit.
Per maggiori informazioni e download vedere il seguente sito https://krita.org/en/

domenica 16 luglio 2017

Software per la creazione di cloud per la condivisione dei file

Se state cercando una versione gratuita per la realizzazione di sistema cloud per la gestione dei file, storage, utilizzando i propri pc, il software qui https://owncloud.org/ di seguito, permette la realizzazione di sistema cloud per la condivisione e salvataggio dei file.

sabato 15 luglio 2017

.Net comprimere i file tramite la libreria DotNetZip in VB.net e C#

Si riporta l'articolo scritto per il sito http://www.iprogrammatori.it/articoli/programmazione/art_net-comprimere-e-decomprimere-i-file-tra_1512.aspx

In questo articolo vedremo come utilizzare la libreria DotNetZip, scaricabile gratuitamente da questo sito http://dotnetzip.codeplex.com/ per comprimere e decomprimere i file.
La libreria, come in molti progetti presenti in Codeplex è gratuita ed utilizzabile in vari scenari.
Vedremo alcuni esempi di codice da utilizzare con il linguaggio di programmazione VB.Net e C# sia in ambito Windows Application e webapplication.
Dopo aver scaricare il componente dal seguente sito http://dotnetzip.codeplex.com/ decomprimere la cartella, nella quale troviamo, esempi di codice, librerie per diversi ambienti e dll.

Stesura del codice

Si crea un nuovo progetto con Visual Studio di tipo “Windows Application”, per il linguaggio VB.Net e C#.
Aggiungete quattro pulsanti, come riportato in figura 1


Figura 1 – la form

Ogni pulsante eseguirà un determinato frammento di codice per comprimere o decomprimere.
Aggiungiamo al nostro progetto, un riferimento alla libreria presente nella cartella “zip-v1.9” dove v1.9 indica la versione della libreria (possiamo trovare altre versione nei prossimi mesi) selezionando dalla cartella “Release” la libreria “Ionic.Zip”
Dopo aver aggiunto tale riferimento, inseriamo lo spazio dei nomi, qui di seguito la dichiaraizone per il linguaggio di programmazione VB.Net e C#.


 

VB.Net

Imports Ionic.Zip


C#

using Ionic.Zip;


Dopo aver aggiunto lo spazio dei nomi,  abbiamo a disposizione le classi per comprimere e decomprimere i file o intere cartelle.
Per il pulsante con la dicitura “Zip”, il primo di destra della figura 1, nell’evento click scriviamo il seguente codice.



VB.Net

Private Sub BtnZip_Click(sender As Object, e As EventArgs) Handles BtnZip.Click

 

        Using fileZip As New ZipFile()

            fileZip.AddFile("E:\Filetest1Zip.jpg")

            fileZip.AddFile("E:\Filetest2Zip.jpg")

            fileZip.AddFile("E:\Filetest3Zip.jpg")

             fileZip.Save("E:\FileCompresso.zip")

        End Using

 

C#

private void BtnZip_Click(object sender, EventArgs e)

        {

            using (ZipFile fileZip = new ZipFile())

            {

                fileZip.AddFile("E:\\Filetest1Zip.jpg");

                fileZip.AddFile("E:\\Filetest2Zip.jpg");

                fileZip.AddFile("E:\\Filetest3Zip.jpg");
                fileZip.Save("E:\\FileCompresso.zip");

            }

 

        }



Come si vede dal frammento di codice precedente, tramite la classe ZipFile, si crea un oggetto con il quale si crea un file compresso.
Il metodo “AddFile”, permette di aggiungere il singolo file, impostando il percorso e nome del file da comprimere.
Con il metodo “Save” si crea il file Compresso, passando come parametro, il percorso e nome file compresso.
Ora facciamo doppio click sul secondo pulsante partendo da destra, quello con la dicitura “Zip multi file directory”. Nell’evento click di questo pulsante, abbiamo la possibilità di creare un file compresso, dove al suo interno avremmo delle cartelle che contengono dei file.
Qui di seguito il frammento di codice di esempio.


VB.Net

Private Sub btnFileConDirectory_Click(sender As Object, e As EventArgs) Handles btnFileConDirectory.Click

        Using fileZip As New ZipFile()

            fileZip.AddFile("E:\Filetest1Zip.jpg", "immagine")

            fileZip.AddFile("E:\Filetest2Zip.jpg", "files")

            fileZip.AddFile("E:\Filetest3Zip.jpg")

 

            fileZip.Save("E:\FileCompresso.zip")

        End Using

    End Sub

C#

private void btnFileConDirectory_Click(object sender, EventArgs e)

        {

            using (ZipFile fileZip = new ZipFile())

            {

                fileZip.AddFile("E:\\Filetest1Zip.jpg", "immagine");

                fileZip.AddFile("E:\\Filetest2Zip.jpg", "files");

                fileZip.AddFile("E:\\Filetest3Zip.jpg");

              

                fileZip.Save("E:\\FileCompresso.zip");

            }

        }



Come si vede dal frammento di codice, utilizzando il metodo “AddFile” con il secondo parametro indichiamo la cartella all’interno del file compresso che dobbiamo creare ed aggiungerci il file.
Adesso vediamo un altro esempio di codice, con il quale comprimere un’intera cartella con al suo interno dei file.
Facciamo doppio click sul secondo pulsante, partendo da sinistra, quello con la dicitura “Zip directory”.
Nell’evento click scriviamo il frammento di codice riportato qui di seguito.


VB.Net

Private Sub BtnCompressDirectory_Click(sender As Object, e As EventArgs) Handles BtnCompressDirectory.Click

        Using fileZip As New ZipFile()

            fileZip.AddDirectory("E:\TestCartellaDaZippare")

            fileZip.Save("E:\FileCompresso.zip")

        End Using

    End Sub

C#

private void BtnCompressDirectory_Click(object sender, EventArgs e)

        {

            using (ZipFile fileZip = new ZipFile())

            {

                fileZip.AddDirectory("E:\\TestCartellaDaZippare");

                fileZip.Save("E:\\FileCompresso.zip");

            }

        }


Come si vede dal precedente codice, tramite il metodo “AddDirectory” passando come parametro il percorso della cartella, aggiungiamo nell’archivio del file compresso tutti i file presenti in quella cartella.
Ora che abbiamo visto la parte per comprimere i file, vediamo invece come decomprimere i file compressi.
Facciamo doppio click sul primo pulsante di sinistra, quello con scritto “Decomprimere”, nell’evento click di tale pulsante scriviamo il codice per decomprimere.


VB.Net

Private Sub BtnDecomprimere_Click(sender As Object, e As EventArgs) Handles BtnDecomprimere.Click

        Using fileZip As ZipFile = ZipFile.Read("E:\FileCompresso.zip")

 

            For Each DecomprimiZip As ZipEntry In fileZip

                DecomprimiZip.Extract("E:\CartellaFileDecompressi")

 

            Next

        End Using

    End Sub

 

C#

 

  private void BtnDecomprimere_Click(object sender, EventArgs e)

        {

            using (ZipFile fileZip = ZipFile.Read("E:\\FileCompresso.zip"))

            {

                 

                foreach (ZipEntry DecomprimiZip in fileZip)

                {

                    DecomprimiZip.Extract("E:\\CartellaFileDecompressi");

                }

 

            }

        }


Come si è visto dal precedente codice, tramite il metodo “Read” passando come paramentro, il percorso e nome del file compresso della classe ZipFile, andiamo a rilevare i file e cartelle contenuti al suo interno, tramite la classe ZipEntry, con il metodo “Extract” passando come parametro il pecorso e cartella in cui estrae tutti i file presenti nel file compresso.
Vediamo come utilizzare la libreria anche in ambiente web, in particolare tramite pagina asp.Net.
Dopo aver creato un nuovo progetto Asp.net ed aggiunto ad una pagina un pulsante, aggiungiamo nel progetto web, il riferimento alla libreria DotNetZip, a questo punto, inseriamo lo spazio dei nomi che abbiamo visto in precedenza.
Nell’evento click del pulsante web, dobbiamo prima di tutto creare un file compresso, tramite la classe Zipfile, e tramite il metodo save, passare la classe response, in particolare la proprietà “outputstream”.
Qui di seguito il frammento di codice per entrambi i linguaggi.


VB.Net

Using fileZip As New ZipFile()

            fileZip.AddDirectory("E:\TestCartellaDaZippare")

 

            Response.Clear()

            Response.AddHeader("Content-Disposition", "attachment; filename=DownloadedFile.zip")

            Response.ContentType = "application/zip"

            fileZip.Save(Response.OutputStream)

            Response.End()

 

        End Using

C#

protected void BtnDownloadZip_Click(object sender, EventArgs e)

        {

            using (ZipFile fileZip = new ZipFile())

            {

                fileZip.AddDirectory("E:\\TestCartellaDaZippare");

 

                Response.Clear();

                Response.AddHeader("Content-Disposition", "attachment; filename=DownloadedFile.zip");

                Response.ContentType = "application/zip";

                fileZip.Save(Response.OutputStream);

                Response.End();

            }

        }


Conclusioni

In questo articolo, abbiamo visto come tramite la libreria gratuita DotnetZip possiamo creare applicazioni, anche di una certa complessità, che con poche righe di codice, ci permettono di comprimere file e cartelle.
L’utilizzo delle classi messe a disposizione da questa libreria è molto semplice ed i vari metodi permettono di scrivere con poche righe di codice, operazioni anche complesse.
Nell’articolo sono state affrontate in maniera basilare, come comprimere e decomprimere file sia in ambiente Windows Application e sia in ambiente Web, naturalmente il lettore potrà approfondire tale funzionalità ed eventualmente condividere la sua esperienza, inserendo i commenti in questo articolo.