Question

Comment puis-je extraire une feuille de calcul Excel dans une chaîne en utilisant c #? J'ai déjà la feuille et peut enregistrer sous forme de fichier txt mais au lieu de cela Je veux l'extraire directement dans une corde et faire du traitement.

Était-ce utile?

La solution

Quelque chose comme le code suivant (non testé) devrait fonctionner:

Excel.Application oXL= new Excel.Application();
oXL.Visible = true;
Excel._Workbook oWB = (Excel._Workbook)(oXL.Workbooks.Add( Missing.Value ));
Excel._Worksheet oSheet = (Excel._Worksheet)oWB.ActiveSheet;
string s = (string)oSheet.Cells[1, 1].Value;

Bien que ce soit sur cette exemple pour voir comment nettoyer tout correctement etc.

Autres conseils

Essayez d'utiliser un brillant bibliothèque EPPLUS qui vous permet de charger la feuille de calcul etAccédez à toutes les cellules par programme.

Voici quelques exemples:

//Select all cells in column d between 9990 and 10000
var query1= (from cell in sheet.Cells["d:d"] where cell.Value is double && (double)cell.Value >= 9990 && (double)cell.Value <= 10000 select cell);
//In combination with the Range.Offset method you can also check values of other columns...


//Here we use more than one column in the where clause. 
//We start by searching column D, then use the Offset method to check the value of column C.
var query3 = (from cell in sheet.Cells["d:d"]
                     where cell.Value is double && 
                              (double)cell.Value >= 9500 && (double)cell.Value <= 10000 && 
                              cell.Offset(0, -1).Value is double &&      //Column C is a double since its not a default date format.
                              DateTime.FromOADate((double)cell.Offset(0, -1).Value).Year == DateTime.Today.Year+1 
                     select cell);

Console.WriteLine();
Console.WriteLine("Print all cells with a value between 9500 and 10000 in column D and the year of Column C is {0} ...", DateTime.Today.Year + 1);
Console.WriteLine();    

 count = 0;
//The cells returned here will all be in column D, since that is the address in the indexer. 
//Use the Offset method to print any other cells from the same row.
foreach (var cell in query3)    
{
   Console.WriteLine("Cell {0} has value {1:N0} Date is {2:d}", cell.Address, cell.Value, DateTime.FromOADate((double)cell.Offset(0, -1).Value));
   count++;
}

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top