[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;

}

Annunci
[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