[C#] Export di un file Excel in un file CSV

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;

}

[C#] Export di un file Excel in un file CSV

Unified C# 3.0 Specification

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
Unified C# 3.0 Specification

Certificazioni – Brainbench C# Certification

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.

Certificazioni – Brainbench C# Certification