Un metodo rapido e veloce per esportare un semplice file Excel in un file CSV:
using _Excel = Microsoft.Office.Interop.Excel;
…
[DllImport("user32.dll")]
static extern int GetWindowThreadProcessId(int hWnd, out int lpdwProcessId);
…
/// <summary>
///
/// </summary>
/// <param name=”sInFile”>Il file .xls in input</param>
/// <param name=”sOutFile”>Il file .csv in output</param>
/// <remarks>
/// Le seguenti considerazioni sono relative a questo specifico esempio.
/// Il file .xls deve essere in formato 97/2003, no 2007.
/// Il file .csv non è “comma-separated”, ma è “semicolon-separated”, cioè vengono separati i valori con “;”
/// I filename devono essere in “absolute path” e non in “relative path”.
/// </remarks>
/// <returns>Ritorna true se l’esportazione riesce con successo, false altrimenti.</returns>
private bool ExportXlsToCsv(string sInFile, string sOutFile)
{
bool Result = File.Exists(sInFile); // verifica che il file .xls esista
if (Result)
{
_Excel.ApplicationClass excel = null; // l’istanza di Excel
int excelProcessId = 0; //id del processo creato per l’istanza
try
{
if (File.Exists(sOutFile)) // se il file di destinazione esiste…
{
File.Delete(sOutFile); // … lo elimina preventivamente
}
excel = new _Excel.ApplicationClass(); // istanzia Excel
GetWindowThreadProcessId(excel.Hwnd, out excelProcessId); // ricava l’id assegnato per il processo generato
excel.Visible = false; // evita che l’istanza dell’applicativo sia visibile all’utente
_Excel.Workbook workBook = excel.Workbooks.Open(sInFile, 0, true, 5, “”, “”, true, _Excel.XlPlatform.xlWindows, “\t”, false, false, 0, true, 1, 0); // apre il file .xls
workBook.SaveAs(sOutFile, _Excel.XlFileFormat.xlCSVMSDOS, Type.Missing, Type.Missing, Type.Missing, Type.Missing, _Excel.XlSaveAsAccessMode.xlNoChange, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing); // salva il file in formato .csv
excel.DisplayAlerts = false; // evita che venga richiesta la conferma di salvataggio alla chiusura di Excel (dato che è già salvato in .csv)
excel.Quit(); // chiude l’istanza di Excel
Result = true;
}
catch
{
Result = false;
}
finally
{
excel = null; // una volta chiusa l’istanza, questa assegnazione è comunque necessaria
if (excelProcessId != 0)
{
// se per qualche motivo non viene chiusa l’istanza Excel, facciamo una kill
int iMaxTimeoutMs = 3000; // i ms di attesa per aspettare che l’istanza venga chiusa correttamente
int iCheck = 250; // i ms per ogni controllo
while ( (iMaxTimeoutMs>0) && (Process.GetProcessById(excelProcessId) != null) )
{
Thread.Sleep(iCheck);
iMaxTimeoutMs -= iCheck;
}
Process excelProcess = Process.GetProcessById(excelProcessId);
if (excelProcess != null) // se ancora a questo punto l’istanza è attiva…
{
// (non dovrebbe servire, ma non si sa mai)
excelProcess.Kill(); // …la si butta giù di forza !
}
}
}
}
return Result;
}
Unified C# 3.0 Specification
29/11/2007
Se cercate le specifiche del C# 3.0 e non riuscite a scaricarle da MSDN, vi comunico che il link segnalato un pò in giro per i vari siti (anche della stessa MS) è sbagliato.
Quello corretto è questo.
Per quanto riguarda la mia assenza dal blog, ultimamente ho fatto dei gran botti sono stato molto molto molto impegnato per lavoro, spero di recuperare a breve.
riferimenti : link
Ente Certificatore : Brainbench (www.brainbench.com)
Nome Certificazione : Brainbench C# Certification
Costo : Free (15$ se si richiede il certificato cartaceo)
Modalità esame : Online, 40 domande, 3 minuti per domanda, a risposta singola
Score minimo : >2,74 standard certification, >3,99 master certification (il massimo è 5)
Certificazione conseguita : si (3.61)
Livello di difficoltà (1-5) : 3
Utilità tecnica (1-5) : 3
Annotazioni : più che una certificazione, è un livello di certificazione
Innanzitutto devo spiegare la mia assenza negli ultimi giorni. Ho iniziato nuove attività e la sera arrivo cotto, per cui sto dedicando meno tempo allo studio, ma solo per un fatto fisiologico.
Ripresi i giri tornerò in gran forma.
Quella di cui vi parlo oggi è una buona opportunità per certificare le proprie competenze su un insieme di argomenti.
Il sito che vi propongo, offre la possibilità di conseguire centinaia di certificazioni, anche su tematiche non inerenti l’informatica (financial, languages, management…).
Il concetto è quello di proporre al candidato un test online, da cui evincere un punteggio (quindi un livello) di conoscenza della materia.
In sè il concetto è buono, dato che vengono indicate le conoscenze richieste per sostenere l’esame, quindi le si può studiare prima.
Inoltre, per chi voglia studiare un corso prima, vengono proposti dei corsi a pagamento, sia sul sito stesso che su altri siti partner.
Il costo degli esami singoli è di 49$, che comprende anche la spedizione del certificato (l’azienda è negli USA). Ci sono anche esami free (ed è questo il caso di quello che ho fatto io), nel senso che i 49$ ce li mette un sito sponsor a cui ti devi registrare (io mi sono iscritto ad un sito sponsor che propone i cosiddetti panel, cioè in pratica dei sondaggi, per i quali vieni anche pagato), ma in quel caso se vuoi il certificato cartaceo devi sborsare 15$ (circa 11€) per la spedizione (che è comunque differita di un mese e mezzo circa). Il certificato cartaceo comunque non è obbligatorio.
Oppure ci si può iscrivere al sito, pagando una sottoscrizione mensile (99$, minimo tre mesi) o annuale (199$), in quel caso nel periodo di sottoscrizione si possono sostenere tutti gli esami che si vuole, e la spedizione del certificato è compresa nel prezzo. Chiaramente non ci vuole la calcolatrice scientifica per capire che ti conviene (e sul sito ti spingono) ad una subscription annuale…
Il sito comunque, a prescindere dalla sottoscrizione, mette a disposizione una pagina con i dati del tuo ID e degli esami sostenuti, così nel CV si possono mettere queste informazioni per farle verificare a chi le legge.
Unica pecca, è il fatto che gli esami sostenuti hanno “validità” triennale, poi bisogna risostenere l’esame. In teoria è giusto, in pratica forse un pò meno (se fra tre anni avrò fatto 20 esami, prima o poi li devo rifare di nuovo tutti e 20).
Ritengo sia una buona opportunità. Infatti a tempo debito, anche io conto di fare una subscription annuale.
Ultima nota : per chi sta valutando l’idea di un lavoro all’estero (USA/GB) ho scoperto che parecchie aziende ne tengono conto, quindi non è proprio malvagia come (livello di) certificazione.
