C# - Excel munkafüzeteket konvertáló osztály készítése

forráskód letöltése
Készítünk egy osztályt, amely segítségével a Microsoft Excel által ismert, különböző formátumú munkákat konvertálhatunk át egyik formátumból a másikba. A forrásállomány és a célállomány formátumai a következők lehetnek: Dbase4-es tábla, DIF állomány, Excel bővítmény, Excel munkafüzet, Excel sablon, HTML, MSDOS szöveg, unicode szöveg, PRN állomány és XML.
Az Excel által használható formátumok az Excel verziójától és telepítésétől függőek. Előfordulhat, hogy nem tudja felhasználni az összes lehetséges formátumot.
Ahhoz, hogy az Excel elérhető legyen, egy referenciát kell hozzáadni projektünkhöz. Válasszuk a Project - Add reference menüpontot, majd a COM lapon keressük elő a Microsoft Excel 10.0 Object Library-t. A verziószám az éppen telepített Excel verziószámától függően változhat.
Egy felsorolástípus segítségével létrehozunk egy listát a használható formátumokról.
public enum SaveFormats {sf_AddIn, sf_DBF4, sf_DIF, sf_HTML, sf_TextMSDOS, sf_Template,
  sf_TextPrinter, sf_UnicodeText, sf_WorkBook, sf_XMLSpreadsheet};
A konvertálást az Execute függvény végzi.
public static void Execute(string oldDocument, string newDocument, SaveFormats sf)
A konvertálandó állomány nevét az oldDocument, a célállomány nevét a newDocument paraméterekben adhatjuk meg. Az állománynevek megadásánál az elérésükhöz szükséges elérési utat is meg kell adnunk. Az sf paraméterben adhatjuk meg a mentés formátumát.
A konvertálást úgy hajtjuk végre, hogy a háttérben megnyitjuk a Microsoft Excel programot. Betöltjük a forrásállományt, majd elmentjük a newDocument-ben megadott néven, az sf paraméterben megadott formátumban.
Először meg kell nyitnunk az Excel programot.
Excel.Application excelApp = new Excel.ApplicationClass();
Az oldDocument paraméterben magadott dokumentumot megnyitjuk a háttérben.
object m = Missing.Value; 
excelApp.Workbooks.Open(Application.StartupPath + "\\" + oldDocument, m, m, m, m, m, m, m, m, m, m, m, m, m, m); 
A dokumentum megnyitásakor szerencsénk van, mert az Excel automatikusan felismeri a megadott állomány formátumát.
Ha az állomány betöltődött, akkor a SaveAs metódus meghívásával menthetjük el, más néven és formátumban.
excelApp.ActiveWorkbook.SaveAs(Application.StartupPath + "\\" + newDocument, xlFormat, null, null, null, null, XlSaveAsAccessMode.xlExclusive, null, null, null, null, null); 
A mentésnél már nekünk kell megadnunk a létrejövő állomány formátumát.
Miután létrejött az új állomány, nincs más dolgunk, mint bezárni az Excel programot.
excelApp.ActiveWorkbook.Close(false, null, null);
excelApp.Quit();
A konvertálás folyamata teljesen a háttérben zajlik, a felhasználó számára nem látható módon.
Azért, hogy a létrejövő állomány a megfelelő kiterjesztést kapja, létrehoztuk a ValidateFileName függvényt.
public static string ValidateFileName(string fileName, SaveFormats sf)
Bemenő paraméterként az állománynevet és a mentés formátumát kell megadnunk. A függvény a formátumnak megfelelő kiterjesztéssel tér vissza.
A kiterjesztés módosításához a Path.ChangeExtension függvényt használjuk.
fileName = Path.ChangeExtension(fileName, ext);