2009-05-26 7 views
12

Comment lire une feuille Excel et charger la sélection marquée (Area) dans un tableau multidimensionnel? Une colonne dans Excel pourrait elle-même être un tableau multidimensionnel car il contiendrait plus d'une seule valeur. L'idée (pas sûr que ce soit bon ou mauvais) est maintenant de faire une boucle for à travers tous les Excel.Area (champs sélectionnés) et ajouter le contenu de ce champ au tableau multidimensionnel. Comme le tableau multidimensionnel est de type object [,] et donc non générique, il n'y a pas de méthode add() pratique. Tout cela doit être fait manuellement.Lecture à partir d'Excel (Range into multidimensional Array) C#

Une idée si cette approche est OK ou si cela pourrait être fait plus efficacement?

Répondre

18

Vous pouvez lire la valeur de plage sous forme de tableau:

using (MSExcel.Application app = MSExcel.Application.CreateApplication()) 
{ 
    MSExcel.Workbook book1 = app.Workbooks.Open(this.txtOpen_FilePath.Text); 
    MSExcel.Worksheet sheet = (MSExcel.Worksheet)book1.Worksheets[1]; 
    MSExcel.Range range = sheet.GetRange("A1", "F13"); 

    object value = range.Value; //the value is boxed two-dimensional array 
} 

Cet extrait de code est de .NET wrapper for MS Office. Mais le même principe est dans VSTO ou VBA dans MS Excel.

2

Voici le code C# pour le faire avec SpreadsheetGear:

// Load the workbook. 
    SpreadsheetGear.IWorkbook workbook = SpreadsheetGear.Factory.GetWorkbook(@"MyWorkbook.xlsx"); 
    // Get a range of cells as an array of object[,]. 
    object[,] values = (object[,])workbook.Worksheets["MySheet"].Cells["A1:J10"].Value; 

SpreadsheetGear fournit également des API rapides pour accéder à des cellules une à la fois afin que vous puissiez éviter de copier les valeurs à un tableau sans sacrifier les performances.

Disclaimer: Je possède SpreadsheetGear LLC

+0

Pourquoi est-il préférable d'utiliser SpreadsheetGear par rapport à l'Excel Interop? – gyurisc

+0

Cela dépend du type d'application que vous construisez et de ce que vous en faites. Plutôt que de les énumérer ici, jetez un oeil aux commentaires de nos clients sur le côté droit de cette page: http://www.spreadsheetgear.com/products/spreadsheetgear.net.aspx –

+0

"fournit également des API rapides" ... est-ce que l'API SpreadsheetGear.Advanced.Cells ou juste le fait que nous sommes la valeur ici à un objet [,]? Je suppose que vous pouvez lancer directement pour doubler [,] aussi? – Terry