web-dev-qa-db-fra.com

Utiliser C # pour lire/écrire des fichiers Excel (.xls/.xlsx)

Comment lire et écrire des fichiers Excel en C #? J'ai déjà ajouté la bibliothèque d'objets Excel à mon projet, mais je ne reçois pas une description suffisamment claire de ce qui doit être fait pour accéder aux fichiers.

S'il vous plaît, aidez-moi à comprendre et, lors de l'explication, gardez à l'esprit que je suis un peu novice mais que je ne suis pas un débutant. J'étudie beaucoup, donc je ne suis pas totalement ignorant.

18
jitsuin

Je suis un grand fan de l’utilisation de EPPlus pour effectuer ce type d’actions. EPPlus est une bibliothèque que vous pouvez référencer dans votre projet et créer/modifier facilement des feuilles de calcul sur un serveur. Je l'utilise pour tout projet nécessitant une fonction d'exportation.

Voici une entrée de blog de Nice qui montre comment utiliser la bibliothèque , bien que la bibliothèque elle-même devrait être accompagnée d’exemples qui expliquent comment l’utiliser.

Les bibliothèques tierces sont beaucoup plus faciles à utiliser que les objets Microsoft COM, à mon avis. Je suggérerais d'essayer.

14
Brad Butner

J'utilise NPOI pour tous mes besoins Excel.

http://npoi.codeplex.com/

Fourni avec une solution d'exemples pour de nombreuses tâches Excel courantes. 

8
**Reading the Excel File:**

string filePath = @"d:\MyExcel.xlsx";
Excel.Application xlApp = new Excel.Application();  
Excel.Workbook xlWorkBook = xlApp.Workbooks.Open(filePath);  
Excel.Worksheet xlWorkSheet = (Excel.Worksheet)xlWorkBook.Worksheets.get_Item(1);  

Excel.Range xlRange = xlWorkSheet.UsedRange;  
int totalRows = xlRange.Rows.Count;  
int totalColumns = xlRange.Columns.Count;  

string firstValue, secondValue;   
for (int rowCount = 1; rowCount <= totalRows; rowCount++)  
{  
    firstValue = Convert.ToString((xlRange.Cells[rowCount, 1] as Excel.Range).Text);  
    secondValue = Convert.ToString((xlRange.Cells[rowCount, 2] as Excel.Range).Text);  
    Console.WriteLine(firstValue + "\t" + secondValue);  
}  
xlWorkBook.Close();  
xlApp.Quit(); 


**Writting the Excel File:**

Excel.Application xlApp = new Excel.Application();
object misValue = System.Reflection.Missing.Value;  

Excel.Workbook xlWorkBook = xlApp.Workbooks.Add(misValue);  
Excel.Worksheet xlWorkSheet = (Excel.Worksheet)xlWorkBook.Worksheets.get_Item(1);  

xlWorkSheet.Cells[1, 1] = "ID";  
xlWorkSheet.Cells[1, 2] = "Name";  
xlWorkSheet.Cells[2, 1] = "100";  
xlWorkSheet.Cells[2, 2] = "John";  
xlWorkSheet.Cells[3, 1] = "101";  
xlWorkSheet.Cells[3, 2] = "Herry";  

xlWorkBook.SaveAs(filePath, Excel.XlFileFormat.xlOpenXMLWorkbook, misValue, misValue, misValue, misValue,  
Excel.XlSaveAsAccessMode.xlExclusive, misValue, misValue, misValue, misValue, misValue);  



xlWorkBook.Close();  
xlApp.Quit();  
1
Ramya Prakash Rout

Vous pourriez aussi être intéressé par http://openxmldeveloper.org/

1
Peter Schneider

Vous pouvez utiliser Excel Automation (il s’agit en réalité d’une base COM), par exemple:

Excel.Application xlApp ;
Excel.Workbook xlWorkBook ;
Excel.Worksheet xlWorkSheet ;


xlApp = new Excel.ApplicationClass();
xlWorkBook = xlApp.Workbooks.Open("1.xls", 0, true, 5, "", "", true, Microsoft.Office.Interop.Excel.XlPlatform.xlWindows, "\t", false, false, 0, true, 1, 0);
xlWorkSheet = (Excel.Worksheet)xlWorkBook.Worksheets.get_Item(1);

Lien vers le tutoriel complet

1
Baget

Si vous faites une manipulation simple et pouvez vous lier à xlsx, vous pouvez vous-même manipuler le XML. Je l'ai fait et j'ai trouvé que c'était plus rapide que de parler des bibliothèques Excel.

Il existe également des bibliothèques tierces qui peuvent être plus faciles à utiliser ... et peuvent être utilisées sur le serveur, contrairement aux MS.

0
LosManos