Post recenti
Da sempre Microsoft Visual Studio è un ambiente di sviluppo estendibile, nel senso che è possibile creare e installare componenti aggiuntivi che offrano funzionalità non comprese di default dall'ambiente stesso. Come sapete, Visual Studio 2010 è un ambiente rivoluzionario poichè fa uso di WPF per molti aspetti e questo cambia anche l'estendibilità. Con l'eccezione di Addin e Code Snippet, che si "impacchettano" e distribuiscono col vecchio formato di file .vsi, con VS 2010 viene introdotto il formato .vsix che serve per installare le cosiddette extensions, ossia componenti aggiuntivi quali template, tool window, estensioni per l'editor e controlli utente da installare nella Toolbox. Cambia anche la strumentazione di Visual Studio, che si arricchisce con l'Extension Manager che ci permette di gestire le estensioni in locale e di scaricarne di nuove dalla Visual Studio Gallery.
Per poter sviluppare questo tipo di estensioni (ad eccezione dei project/item template) è necessario dotarsi del Visual Studio 2010 SDK, disponibile qui. Una volta installato si hanno a disposizione, oltre a una serie di strumenti e documenti, nuovi modelli di progetto dedicati all'estendibilità dell'ambiente (incluso l'editor di codice). Ad esempio, supponiamo di voler creare un controllo utente WPF da voler distribuire e rendere disponibile nella Toolbox invece che lasciare all'utente il compito di farlo manualmente.
Clicchiamo File|New|Project. Espandiamo la cartella Visual Basic (ma c'è anche per C#), quindi il nodo Extensibility. Dall'elenco di template disponibili selezioniamo quello chiamato WPF ToolBox Control:
Dopo alcuni il nuovo progetto è pronto. Si presenta in realtà come un normale progetto per user control in WPF:
Se vogliamo, possiamo modificare il codice e implementare un controllo utente che abbia più senso ma per il nostro post dimostrativo è sufficiente quello proposto. In Solution Explorer possiamo notare la presenza di un file chiamato ProvideToolboxControlAttribute.vb, che è di supporto all'estendibilità, e di un file chiamato source.extension.vsixmanifest. Quest'ultimo è un file a struttura Xml che contiene le informazioni sul pacchetto di installazione da creare per distribuire l'estensione e che, fortunatamente, può essere editato direttamente dall'IDE. Facciamo doppio clic su questo file e osserviamo Visual Studio 2010:
La maggior parte delle informazioni richieste si spiega da sola, in particolare possiamo inserire l'autore, il numero di versione dell'extension, la descrizione, un contratto di licenza (in formato testo o Rtf), un'icona e un'immagine d'anteprima che verrà utilizzata dal tool Extension Manager. Inoltre è possibile specificare riferimenti ad altre estensioni (box References) ed eventuali ulteriori contenuti da distribuire (box Content). Molto interessante è la possibilità di specificare le edizioni di Visual Studio 2010 supportate dall'extension, che si pone in essere cliccando il pulsante Select Editions che fornisce accesso alla seguente finestra, dove è possibile indicare le edizioni desiderate (incluse le Shell):

A questo punto compiliamo il progetto. Se premiamo F5, verrà avviata una seconda istanza di Visual Studio 2010 (denominata Experimental Hive) per il debug ma non è questo che ci interessa, volendo invece vedere come avviene il deploy. All'interno della cartella Bin\Debug (o Bin\Release) del progetto troveremo un file con estensione .vsix, che prende il nome dal progetto. Questo è esattamente il file che dovremo distribuire ai nostri utenti e che installerà il nostro componente. Facciamo doppio clic sul file. A questo punto comparirà una finestra in cui ci verrà chiesto di accettare il contratto di licenza, oltre a visualizzare informazioni sul componente e permetterci di selezionare le edizioni di Visual Studio 2010 tra quelle presenti sulla macchina:

Facciamo clic su Install. Al successivo riavvio di Visual Studio 2010 troveremo il nostro controllo utente WPF nella Toolbox:
Nella figura precedente il controllo si vede due volte, sia perchè disponibile nella nuova scheda appositamente creata sia perchè disponibile nella scheda che riepiloga tutti i controlli WPF. Per gestire la nostra estensione, ma anche tutte quelle disponibili sul sistema, selezioniamo Tools|Extension Manager. Questo strumento si presenta come in figura:
Notate come sia possibile sfogliare tutte le estensioni oppure solo quelle relative a una determinata categoria (come i controlli). Nell'esempio si vede il nostro controllo utente che può essere disabilitato o disinstallato e per il quale vengono mostrate le informazioni sul produttore e un'immagine d'anteprima. E' importante sapere che il formato .vsix è riconosciuto dalla Visual Studio Gallery e ci permette di condividere le nostre estensioni su Internet (cosa che il vecchio formato .vsi non consente). Nel prossimo post vedremo come condividere e scaricare dalla Gallery estensioni per Visual Studio 2010 utilizzando l'Extension Manager.
Alessandro
Questo è il companion post per l'articolo indicato nel titolo. Qui potete chiedere chiarimenti o scrivere critiche o suggerimenti. Nei limiti del possibile si cercherà di rispondere, qui o in successivi articoli.
(se non vedete l'editor per scrivere, a destra trovate 'Feedback', cliccateci su e scrivete)
L'archivio sportelli bancari elenco Abi Cab aggiornato a fine febbraio 2010 disponibile per lo scaricamento a questo indirizzo:
Alcune informazioni sui files:
- campi separati da tabulazione hex: 09
- righe separate dal terminatore di riga windows hex: 0d0a
- intestazione colonne sulla prima riga
Il file TabAbi contiene i dati relativi alle banche.
Il file TabAbiCab contiene le informazioni relative agli sportelli
Nel file TabAbi e TabAbiCab è presente il campo "Aggiornamento" che evidenzia la data di riferimento di validità dei dati.
Tutte le righe di TabAbiCab che NON contengono la data più recente sono da considerarsi relative a sportelli non più attivi o assorbiti da altre banche, tali sportelli sono presenti solo come log dei dati storici, ne è sconsigliato l'utilizzo per nuove emissioni di flussi di comunicazione con le banche.
Questo archivio è da considerarsi frutto di una rielaborazione "amatoriale" dei dati degli sportelli bancari reperibili in rete l'unico mio apporto è l'aggiunta della data di ultima importazione in modo tale da costituire un archivio comprendente anche i dati di banche e sportelli non più attivi.
Non si rivendica nessun diritto riguardo al contenuto del file, l'utilizzatore ne può fare ciò che vuole senza contattarmi nè informarmi della cosa, preferirei inoltre non essere neanche citato come fonte in eventuali successive redistribuzioni.
Se si vuole una garanzia circa la correttezza dei dati e/o una qualsiasi licenza il mio consiglio è di NON utilizzare il presente archivio e di rivolgersi direttamente alla propria banca chiedendo di avere in forma ufficiale il file degli sportelli bancari.
I ringraziamenti sono comunque graditi.
Se sentite il malsano bisogno di farmi pervenire una somma di denaro, scegliete l'organizzazione umanitaria a voi più gradita e fate a questa il vostro pagamento.
Powered with Windows Live Writer
Sono molto contento di quest'addin che ho realizzato un po' di tempo fa per VS 2008, sia perchè lo uso personalmente sia perchè ho avuto dei riscontri positivi dagli utilizzatori. Pochi mesi fa resi disponibile anche una versione per la Beta 2 di Visual Studio 2010, oggi ho fatto l'upload della versione compatibile con Visual Studio 2010 Release Candidate.
E' disponibile su CodePlex, quindi si può scaricare il codice sorgente da questo indirizzo. Brevemente, si tratta di un componente aggiuntivo che aggiunge una voce al menu contestuale quando siamo nell'editor di codice e che consente di esportare il codice selezionato sotto forma di code snippet riutilizzabile. Spero possiate trovarlo utile :-)
Alessandro
Mi faccio portavoce del Team di Visual Basic Tips & Tricks per comunicarvi che la nostra community è entrata a far parte di INETA, un'Associazione no-profit che si occupa di fornire supporto alla crescita, all'organizzazione e alla formazione degli User Group di tutto il mondo il cui focus sia la tecnologia Microsoft .NET.
L'impegno che abbiamo profuso negli ultimi mesi per la crescita della community, con particolare riguardo all'organizzazione di eventi, ha consentito che questo importante passo fosse possibile. INETA offre anche delle apposite pagine per essere aggiornati sugli eventi tenuti dalle community locali e sulle attività dei migliori speaker, per cui vi invitiamo a visitare il sito http://europe.ineta.org/ per rimanere aggiornati sugli eventi organizzati dalle community italiane.
Vi trovate la nostra pagina cliccando qui.

Alessandro
Entity Framework utilizza una stringa di connessione un po’ più complessa del normale perché oltre a specificare la connectionString del provider ADO.NET, occorre definire anche l’EntityClient provider ovvero la posizione dei file di mapping (.csdl, ssdl, msl). Di default EF include questi file come risorsa nell’assembly in cui sono definiti creando una connessione del tipo:
metadata=res://*/Northwind.csdl|res://*/Northwind.ssdl|res://*/Northwind.msl; ….
res:// indica che il file è una risorsa la cui posizione è specificata dal “persorso” che segue. Questo percorso rappresenta l’assembly e di default il designer specifica * (asterisco) che istruisce EF di cercare nell’assembly correntemente caricato, in quelli referenziati ed in tutti quelli presenti nella cartella \bin dell’applicazione.
Questo, sebbene semplifichi la stringa di connessione, aggiunge un certo overhead dovuto alla ricerca dei file di mapping nei vari assembly. Per evitarlo sarebbe opportuno specificare sempre il full name dell’assembly in cui sono definiti i file:
metadata=res://MyAssembly.dll, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null/Northwind.csdl|…;
Questo accorgimento velocizza tutta la fase di caricamento dei file di mapping e vale sicuramente la modifica davvero piccola che bisogna fare manualmente :)
Dall'uscita della Release Candidate di Visual Studio e .Net 4.0 sono state rilasciate alcune patch per correggere alcuni problemi relativi a VS. L'elenco è questo:
Intellisense Crash Issue
Risolve crash improvvisi provocati dall'IntelliSense in alcune configurazioni di VS. Le patch da scaricare sono due:
1) Intellisense Crashes when using Tablet, Multi-touch, Screen Readers
2) Visual Studio 2010 crashes with System.InvalidOperationException when performing QuickInfo
Hotfix for “Issue with Auto-Generated Designer Files not Adding Controls” relativi al designer asp.net
Si tratta di un problema relativo al designer WebForms che non aggiunge correttamente i controlli nel file associato all'aspx (designer.vb o designer.cs).
Trovate maggiori dettagli qui, mentre il download qui.
Un riepilogo generale lo trovate sul blog di Scott:
Some VS 2010 RC Updates (including patches for Intellisense and Web Designer fixes)
Tempo fa, in questo articolo introduttivo a Parallel LINQ con VB 2010 pubblicato su VB T&T, parlai, fra l'altro, di come intercettare e gestire le eccezioni che si verificano quando si lavora "in parallelo". In sostanza si intercetta una AggregateException che espone una proprietà InnerExceptions che è una collezione di eccezioni che possono verificarsi in maniera concomitante (ad esempio se più task contemporaneamente incontrano un errore).
Tutto vero, però bisogna prima andare in Tools|Options|Debugging e togliere il segno di spunta da "Enable Just My Code". Questo perchè se viene sottoposto a debug solo il proprio codice, Visual Studio si ferma prima del blocco Catch che gestisce l'eccezione, impedendo l'analisi delle eccezioni occorse.
Giusto per conoscenza :-)
Alessandro
Il Team della Task Parallel Library (TPL), l'insieme di API che avremo a disposizione in .NET 4.0 per quanto riguarda la programmazione "parallela" e per PLINQ, ha pubblicato un documento in cui vengono spiegati i pattern più appropriati per questo tipo di programmazione. La cosa molto bella è che non è disponibile solo per C#, ma anche per Visual Basic :-) Oltre a discutere pattern avanzati, vengono illustrati anche concetti di base (ad esempio sui Task).
Il documento, per entrambi i linguaggi, è scaricabile a questo indirizzo.
Alessandro
Beth Massi ha riepilogato in questo suo post un elenco di nuovi esempi di codice in Visual Basic 2010 per imparare o approfondire le più recenti tecnologie Microsoft. Si va dal linguaggio a WPF/Silverlight passando per SharePoint e Parallel Programming. Ci sono anche molti nuovi tutorial sul Visual Basic Developer Center (vi consiglio di leggere anche i blog degli MVP lì elencati), che hanno come target quanto di nuovo avremo a breve a disposizione in .NET Framework 4.0.
Alessandro
Volevo segnalarvi che il giorno 18 marzo p.v. la nostra community terrà un evento gratuito, con tre sessioni pomeridiane dedicate ad alcune interessanti tecnologie Microsoft per sviluppatori. L'incontro si terrà a Milano presso la sede della società ObjectWay e avrà inizio alle ore 14 per la registrazione. Vi riassumo l'agenda, a fine post trovate i link per i dettagli:
Ore 14.00 - 14.30: Registrazione
Ore 14.30 - 15.30: "TFS 2010 Basic per singoli sviluppatori" - speaker, il sottoscritto :-)
Ore 15.30 - 16.30: "Sviluppare per Windows 7 con Visual Basic 2010" - speaker Renato Marzaro
Ore 16.30 - 17.00: Coffe break
Ore 17.00 - 18.00: "L'accesso ai dati in VB 2010 con ADO.NET Entity Framework 4 e SQL Server 2008" - speaker Antonio Catucci (Microsoft MVP)
A questo indirizzo trovate tutti i dettagli dell'incontro più l'abstract delle sessioni, mentre a quest'altro indirizzo trovate le informazioni su come raggiungere il luogo dell'evento.
I posti sono limitati, per cui vi consiglio di affrettarvi ad iscrivervi :-) Ci vediamo il 18!
Alessandro
Questo è il companion post per l'articolo indicato nel titolo. Qui potete chiedere chiarimenti o scrivere critiche o suggerimenti. Nei limiti del possibile si cercherà di rispondere, qui o in successivi articoli.
(se non vedete l'editor per scrivere, a destra trovate 'Feedback', cliccateci su e scrivete)
Durante l'MVP Global Summit tenutosi a Bellevue e Redmond, conclusosi pochi giorni fa, ho avuto l'immensa soddisfazione di ricevere la comunicazione di essere stato votato come MVP Of The Year 2009 per la categoria Visual Basic.
Ho scritto "votato" perchè tale riconoscimento è arrivato dall'espressione del giudizio degli altri MVP di Visual Basic di tutto il mondo e dal team che lo produce.
Permettetemi di essere fiero di questo traguardo e di voler rendere pubblica la mia emozione: essere votati dai propri "colleghi" MVP sparsi nei 5 continenti (che ringrazio di cuore), con nomi veramente blasonati, e dal gruppo di prodotto è una gioia difficile da spiegare. Tutto ciò che ho fatto in questo strano mondo, è sempre stato dettato da una grandissima passione e spero che sia questa la connotazione che emerge da blog, video, articoli e tutto il resto.
Approfitto anche per ringraziare tutti coloro che hanno contribuito, ai vari livelli, ad organizzare l'MVP Global Summit 2010. Oltre ad essere un evento importante, è un evento in cui si respira un clima speciale, che nessuna conferenza può equiparare. Un clima pieno di emozioni, in cui sicuramente le sessioni tecniche sono particolarmente interessanti ma, soprattutto, c'è la possibilità di incontrare gli amici MVP e di Microsoft provenienti da tutto il mondo, di condividere le proprie esperienze professionali e personali così come di trascorrere momenti goliardici.
Un grazie di cuore alle persone che hanno riposto questa stima e fiducia in me, che spero di meritare e di non deludere. Se volete qualche info in più su come ciò sia avvenuto, Tim Heuer ha scritto un post in cui ha spiegato il tutto in merito ai ragazzi di Silverlight.
Un immancabile ma fondamentale ringraziamento a Visual Basic Tips & Tricks: se questa community non fosse esistita, probabilmente ora non starei scrivendo questo post.
Alessandro
Per poter compensare i fornitori lo standard CBI prevede l’invio di un file di tipo testuale predisposto secondo un particolare tracciato che descrive i rapporti da regolare.
Come qualsiasi altra comunicazione CBI prevede per i bonifici un file strutturato contenente righe di testo ciascuna marcata in modo particolare in modo tale da poter costituire il “sistema” della comunicazione.
Per quanto riguarda il file Bonifici è prevista la struttura:
| Record | Descrizione |
| PC | Uno per comunicazione come prima riga della comunicazione, riepiloga i dati generali della comunicazione come mittente, destinatario, data e descrizione del flusso In una unica comunicazione è possibile prevedere due tipi di pagamenti: - bonifici - emissione assegni |
| EF | Uno per comunicazione come ultima riga della comunicazione riepiloga i totali della comunicazione |
| 10 | Uno per ogni disposizione Contiene i dati generali della disposizione |
| 16 | Uno per ogni disposizione Contiene le coordinate dell’ordinante |
| 17 | Uno per disposizione Contiene le coordinate del beneficiario Se si tratta di bonifici è obbligatoria l’indicazione dell’IBAN del beneficiario |
| 20 | Uno per ogni disposizione Contiene alcune informazioni relative all’ordinante |
| 30 | Uno per ogni disposizione Contiene la descrizione del beneficiario |
| 40 | Unico per ogni disposizione. E’ facoltativo se si tratta di ordine di emissione bonifici. Diventa obbligatorio se si tratta di emissione assegni. |
| 50/60 | Uno per ogni disposizione. Obbligatorio per il tipo disposizione emissione bonifici. |
| 70 | Uno per ogni disposizione |
Alcune particolarità:
- Per poter generare il flusso bonifici è necessario che siano presenti abi/cab/conto corrente del mittente e del destinatario
- Nel file di dettaglio disposizioni NON è stato inserito il codice iban, il codice è calcolato quando serve
Generazione Dati di Prova
I tipi disposizione che si possono generare sono “RIBA” e “Bonifici”, questo programma è infatti in grado di generare entrambi i flussi sia come dati di prova che come file di testo.
Generazione File Bonifici o RIBA
Programma di esempio sviluppato con Visual Basic Express 2008
Programma di esempio sviluppato con Visual C# Express 2008
Powered with Windows Live Writer
Nella generalità dei casi le proprie applicazioni sono destinate a durare nel tempo, altre volte, per altre necessità, si ha il bisogno di creare applicazioni basate su .NET Framework 2.0 e sarà così anche per la 3.5 nel momento in cui .NET 4.0 sarà finalmente in RTM.
Nel riprendere una tradizione già iniziata con Visual Studio 2008, anche il nuovo Visual Studio 2010 (attualmente in Release Candidate) supporta il multi-targeting quindi è in grado di creare applicazioni per specifiche versioni di .NET Framework, a partire dalla 2.0.
La vera buona notizia è che, aprendo le vecchie soluzioni/progetti in Visual Studio 2010, la versione del Framework di destinazione rimarrà invariata ma si avrà la possibilità di sfruttare alcune novità dell'IDE e del linguaggio. Per quanto riguarda l'IDE, è abbastanza normale: il nuovo editor in WPF, zoom, ricerca e tante altre cose sono chiaramente disponibili.
La cosa interessante è che è possibile sfruttare anche novità nella scrittura del codice, che non sono mero appannaggio di Visual Basic 2010. Ad esempio è possibile sfruttare la caratteristica della continuazione di linea implicita, che ci consente di evitare di mettere il carattere di underscore per andare a capo per splittare linee di codice lunghe e addirittura è possibile sfruttare i collection initializers. Giusto per fare due esempi, che poi potete approfondire anche nei confronti di altre novità, questo codice funziona perfettamente in Visual Studio 2010, in un progetto che si basa su .NET 2.0 e scritto in Visual Basic 2005:
Dim aList As New List(Of String) From {"One",
"Two",
"Three"}
Un motivo in più per provare Visual Studio 2010.
Alessandro
Da diversi anni Microsoft rilascia Windows SDK, una serie di strumenti per sviluppatori dedicati a specifiche versioni del sistema operativo. Si tratta di una risorsa insostituibile, tanto più che è gratuita, anche se forse poco conosciuta e utilizzata.
Vorrei fare un piccolo elenco schematico di alcune buone ragioni per scaricare e installare Windows 7 SDK, se siete sviluppatori che vogliono programmare per Windows 7:
-
contiene gli strumenti di debug per codice nativo (il famoso WinDbg)
-
è disponibile per sistemi a 32 e 64 bit
-
lavora su .NET Framework 3.5 Service Pack 1, quindi con codice managed e i compilatori Visual Basic e C#
-
include librerie, file di header e i compilatori per Visual C++
-
contiene FxCop, strumento di analisi del codice .NET atto a verificarne l'aderenza alle Common Language Specifications
-
contiene Orca, strumento di modifica dei pacchetti di installazione per Windows Installer
-
contiene il Windows Performance Toolkit, una serie di strumenti di analisi delle performance delle applicazioni WPF
-
contiene i pacchetti ridistribuibili per installazioni tramite Windows Installer e ClickOnce
-
contiene strumenti di configurazione per servizi WCF
-
contiene strumenti necessari alla generazione e configurazione di applicazioni .NET
Quando viene installato Visual Studio (e questo vale per la 2008 e la 2010), vengono anche installati gli strumenti più importanti dell'SDK di Windows ma con VS 2008 vengono distribuiti i file il cui target è Windows Vista. L'installazione di Windows 7 SDK diventa quindi davvero fondamentale se utilizzate Visual Studio 2008 su Windows 7. Tendenzialmente installare Windows 7 SDK è secondario se avete Visual Studio 2010, tuttavia con l'IDE viene installato solo un subset dell'SDK di Windows (con strumenti aggiornati anche a .NET 4.0) ma se volete avere un compendio completo, contenente strumenti di analisi e debug, Windows 7 SDK è un must-have.
Lo potete scaricare da qui e vale anche per Windows Server 2008 R2.
Alessandro
Ho avuto notizia, negli ultimi giorni, che uno dei prodotti di Symantec Norton, Safe Web, crede di trovare un Trojan Horse nell’eseguibile che installa la versione per Windows XP di CodeBook (http://download.visual-basic.it/cb/vbcb25xp.exe).
Naturalmente, il file è assolutamente sicuro, viene scaricato da anni senza alcuna segnalazione riguardo a qualsiasi problema.
Io mi chiedo (ogni volta che succede, e sempre con un prodotto Norton) perché si continui a ritenere valido – tanto da fornirlo in bundle nell’acquisto di nuovi computer - questo marchio che, da anni ormai (da quando Norton ha ceduto i diritti alla Symantec), non è più affidabile come allora.
L'ultima parte della serie di post sulla realizzazione di un framework per la DeepCopy di oggetti utilizzando l'approccio TDD. Buona lettura!
Continua...
Riprendiamo il discorso lasciato in sospeso nei precedenti post, addentrandoci finalmente nei meandri della DeepCopy...
Continua...
Con circolare n. 22 del 16 febbraio 2010, l'INPS, ha determinato, per l’anno 2010, l'importo dei contributi volontari per i lavoratori autonomi e parasubordinati.
La relativa contribuzione volontaria si determina applicando le aliquote stabilite per il versamento dei contributi obbligatori al reddito medio di ciascuna delle otto classi di reddito previste dalla citata norma. La classe di reddito da attribuire a ciascun lavoratore è quella il cui reddito medio è pari o immediatamente inferiore al valore medio mensile dei redditi prodotti negli ultimi 36 mesi di attività.
(fonte www.dplmodena.it)
A distanza di qualche giorno, il Team di Entity Framework ha pubblicato gli aggiornamenti degli addon EF per renderli compatibili con Visual Studio 2010 RC.
Eccoli:
- Feature CTP 3
- POCO Template, comprendente sia le versioni C# che VB che il supporto per progetti WebSite. Tutti i dettagli li potete trovare qui: Entity Framework POCO Template updated for Visual Studio 2010 Release Candidate.
Purtroppo questi template non saranno parte integrante di Visual Studio ma potranno essere scaricati dalla Visual Studio Gallery. Peccato.
Sicuramente Open XML è una bella cosa perché permette di manipolare gli oggetti Office in maniera veramente semplice ma, soprattutto, senza dover avere riferimenti diretti ad Office!
Per sfruttare appieno questa nuova caratteristica esiste un SDK giunto alla versione 2 ma ancora in CTP che potete trovare qui:
Open XML SDK 2.0 for Microsoft Office – CTP December 2009
Giusto per dare un’idea, vediamo come fare una delle attività più comuni: esportare dei dati in Excel :)
Prima di iniziare
Prepariamo un Foglio Excel che funga da modello per le esportazioni della tabella Customer di Northwind (uno a caso!):
Il Codice
Il codice necessario è davvero molto semplice:
1: Using wb As SpreadsheetDocument = SpreadsheetDocument.Open(FilePath, True)
2: Dim wp As WorkbookPart = wb.WorkbookPart
3:
4: ' Esporta nel primo foglio
5: Dim sheet As WorksheetPart = wp.WorksheetParts.First
6: Dim data As SheetData = sheet.Worksheet.GetFirstChild(Of SheetData)()
7:
8: Dim db As New NorthwindDataContext
9: Dim Customers = From c In db.Customers
10: Select c
11:
12: Dim index As Integer = 2 'Escludi la riga d'intestazione
13: For Each c In Customers
14: data.AppendChild(AddRow(index, c))
15: index += 1
16: Next
17: End Using
I namespace da importare sono:
Imports DocumentFormat.OpenXml.Packaging
Imports DocumentFormat.OpenXml.Spreadsheet
L’oggetto importante è SheetData che viene recuperato da un Worksheet del file Excel (riga 6). L’aggiunta delle righe viene fatto con il metodo AppendChild che, come vedremo, è comune a tutti gli oggetti che gestiscono insiemi (riga 14). Vediamo il metodo AddRow:
1: Private Function AddRow(ByVal rowIndex As Integer, ByVal data As Customer) As Row
2: Dim r As New Row
3: r.RowIndex = rowIndex
4:
5: ' Esporta solo CustomerID, CompanyName, Address, City
6: r.AppendChild(CreateCell("A" & rowIndex, data.CustomerID)) 7: r.AppendChild(CreateCell("B" & rowIndex, data.CompanyName)) 8: r.AppendChild(CreateCell("C" & rowIndex, data.Address)) 9: r.AppendChild(CreateCell("D" & rowIndex, data.City)) 10:
11: Return r
12: End Function
Per ogni riga creata viene specificato l’indice (riga 3) e vengono aggiunte le celle con il solito metodo AppendChild create, a loro volta, con la funzione CreateCell:
1: Private Function CreateCell(ByVal column As String, ByVal value As String) As Cell
2: Dim c As New Cell
3: c.CellReference = column
4: c.DataType = CellValues.String
5:
6: ' Valore
7: Dim v As New CellValue
8: v.Text = value
9:
10: c.AppendChild(v)
11: Return c
12: End Function
Come per la riga anche per la cella viene specificata la “coordinata” che, in questo caso, è data dalla coppia riga-colonna tipica di Excel e impostata con la proprietà CellReference (riga 3). Successivamente si specifica il tipo di dato della cella e si inserisce il valore con un oggetto di tipo CellValue.
Il risultato finale è questo:

Prima di iniziare a modificare quanto realizzato finora, voglio mostrare come ho risolto i "compiti a casa" dell'esercizio precedente.
Continua...
Continuiamo a rispondere, una per una, alle domande che ci siamo posti nel primo articolo della serie:
- e se volessi “personalizzare” la logica di update di una particolare proprietà?
Continua...
Continuiamo a rispondere, una per una, alle domande che ci siamo posti nel primo articolo della serie:
- e se l’oggetto che vogliamo clonare non avesse un costruttore senza parametri?
Continua...
Nel precedente articolo ho iniziato a strutturare una mini-libreria per effettuare la DeepCopy di un albero di oggetti, utilizzando il TDD come metodologia per poter formalizzare i requisiti e delineare l’architettura della soluzione finale.
Al termine dell’articolo sono rimaste in sospeso un po’ di questioni, che è meglio riprendere e trattare una per volta:
- cosa succede se al metodo Clone passiamo un valore NULL?
Continua...
Come promesso a qualcuno sul forum, ecco la prima parte di una serie di post in cui provo a realizzare un tool per la DeepCopy di grafi di oggetti.
Continua...
A causa della prematura morte del mio Toshiba Qosmio X300 ho acquistato un nuovo portatile, la scelta è caduta su Acer Aspire 8940G.
Caratteristiche tecniche:
Processore Intel Core I7-720QM (1,6 GHz 1.333 Mhz FSB)
NVIDIA GeForge GT 240M
18,4 Full HD 1080p LED LCD
4 Gb Ram
1 Tb Disco
Blue Ray Disk
Dolby Home Theater
Windows 7 Home Premium 64 bit
Ho mantenuto l’installazione di Windows 7 Home Premium, sull’altro disco ho installato Windows 7 Ultimate 64 bit, ora ho il dual boot con entrambe le versioni di windows 7.
Dopo aver ripristinato i miei dati e reinstallato i programmi che utilizzo, la mia prima impressione è che si tratti di una macchina estremamente performante.
I tempi di caricamento e attivazione dei programmi sono sicuramente da apprezzare, anche la copia di file tra disco e disco è buona, il recupero del backup fatto con Acronis True Image è stato veloce e senza problemi.
Ho guardato un DVD, mi sembrava di avere il televisore davanti :).
Giocare .. non ho una grande passione per i giochi per cui non sono in grado di giudicare .. e si che questo portatile “trasportabile” è “venduto” come macchina per il gioco e il divertimento :).
Powered with Windows Live Writer
Un blog post veloce veloce da quel di Redmond :-) E' disponibile il training kit per Visual Studio 2010 e .NET Framework 4.0 aggiornato per la Release Candidate resa disponibile pochi giorni fa.
Tra i contenuti aggiornati, nuovi esempi per Visual Basic, Office e SharePoint. Un clic qui e pronti per il download!
Alessandro
Questo strumento per sviluppatori è dispoinibile per il download e l’utilizzo gratuito
Windows 7 Training Kit per sviluppatori include presentazioni, laboratori pratici e demo progettate per imparare a creare applicazioni compatibili con il look & feel di Windows 7.
Può essere scaricato a questo indirizzo
Powered with Windows Live Writer
L'archivio sportelli bancari elenco Abi Cab aggiornato a fine gennaio 2010 disponibile per lo scaricamento a questo indirizzo:
Alcune informazioni sui files:
- campi separati da tabulazione hex: 09
- righe separate dal terminatore di riga windows hex: 0d0a
- intestazione colonne sulla prima riga
Il file TabAbi contiene i dati relativi alle banche.
Il file TabAbiCab contiene le informazioni relative agli sportelli
Nel file TabAbi e TabAbiCab è presente il campo "Aggiornamento" che evidenzia la data di riferimento di validità dei dati.
Tutte le righe di TabAbiCab che NON contengono la data più recente sono da considerarsi relative a sportelli non più attivi o assorbiti da altre banche, tali sportelli sono presenti solo come log dei dati storici, ne è sconsigliato l'utilizzo per nuove emissioni di flussi di comunicazione con le banche.
Questo archivio è da considerarsi frutto di una rielaborazione "amatoriale" dei dati degli sportelli bancari reperibili in rete l'unico mio apporto è l'aggiunta della data di ultima importazione in modo tale da costituire un archivio comprendente anche i dati di banche e sportelli non più attivi.
Non si rivendica nessun diritto riguardo al contenuto del file, l'utilizzatore ne può fare ciò che vuole senza contattarmi nè informarmi della cosa, preferirei inoltre non essere neanche citato come fonte in eventuali successive redistribuzioni.
Se si vuole una garanzia circa la correttezza dei dati e/o una qualsiasi licenza il mio consiglio è di NON utilizzare il presente archivio e di rivolgersi direttamente alla propria banca chiedendo di avere in forma ufficiale il file degli sportelli bancari.
I ringraziamenti sono comunque graditi.
Se sentite il malsano bisogno di farmi pervenire una somma di denaro, scegliete l'organizzazione umanitaria a voi più gradita e fate a questa il vostro pagamento.
Powered with Windows Live Writer
Se avete usato TFS 2010 Beta 2 sappiate che potete migrare il vostro repository alla nuova versione RC usando il comodo Wizard di upgrade fornito con il tool di configurazione di TFS.
Come procedere
Naturalmente fate prima un bel backup dei database di configurazione e delle Collection (senza eliminarli) dopodiché disinstallate TFS 2010 Beta2 e installate la RC.
Al termine dell’installazione attivate la configurazione premendo Configure, selezionate Upgrade e poi Start Wizard:
Selezionate il server SQL dove risiedono i vostri database e cliccate il link List Available Databases:
Next…
… next
… e next…
… tutto è andato liscio :)
Probabilmente il mio caso era abbastanza semplice visto che si trattava di una installazione Basic su un singolo PC, in ogni caso potete fare riferimento ad un documento che spiega come procedere nei diversi scenari possibili. Lo trovate qui:
Come l'anno scorso, anche quest'anno ci salutiamo per qualche giorno. Domani sarò infatti in partenza per Redmond dove parteciperò all'annuale MVP Global Summit, l'evento più importante dell'anno per i Microsoft MVP. L'anno scorso è stata un'esperienza fantastica, dove ho potuto conoscere un sacco di gente proveniente da tutto il mondo e molti dipendenti Microsoft, tra cui il Visual Basic Team.
Anche quest'anno avrò come compagno di viaggio il grande Raf. Sono sicuro di ripetere l'esperienza fantastica dello scorso anno :-) avrò comunque modo di bloggare da laggiù e farvi sapere com'è il tempo ;-)
A presto!
Alessandro
Finalmente è disponibile la Release Candidate di .NET Framework 4 e Visual Studio 2010.
Trovate tutti i dettagli nel post di ScottGu:
VS 2010 / .NET 4 Release Candidate
Attualmente il download è disponibile solo per gli abbonati MSDN. Da domani 10 febbraio dovrebbe essere disponibile per tutti (intasamenti permettendo... :D)
Somasegar ha annunciato la disponibilità, finalmente, della Release Candidate di Visual Studio 2010 e .NET Framework 4.0. Da oggi è disponibile per coloro che hanno un abbonamento MSDN, mentre per il resto del pubblico sarà disponibile il 10 febbraio.
Qui c'è il post di Soma con i dettagli e il link per il download. Ottimo inizio di giornata direi :-)
Alessandro