2017-05-10 1 views
0

Est-il possible de lire à partir d'un fichier Excel ouvert (xlsx) en utilisant EPPlus? Je souhaite que l'utilisateur puisse ouvrir un document Excel, cliquer sur le bouton Add-In et lire les données de la feuille de calcul active. Je n'ai pas besoin d'écrire sur la feuille de calcul, je ne fais que lire. En utilisant interop, j'ai pu obtenir le chemin d'accès complet au classeur ouvert, mais lorsque j'ai essayé d'accéder au classeur, j'ai eu une erreur d'E/S. Des idées sur la façon de contourner cela?VSTO Excel Lecture à partir du classeur ouvert en cours

var test = (Microsoft.Office.Interop.Excel.Workbook) Globals.ThisAddIn.Application.ActiveWorkbook; 
    var test2 = test.ActiveSheet; 
    //var test21 = (Microsoft.Office.Interop.Excel.Workbook) Globals.ThisAddIn.Application.ActiveSheet; 
    var test3 = new FileInfo(test.FullName); 


    using (ExcelPackage package = new ExcelPackage(test3)) // <--- I/O error here 
    { 
     var worksheet = package.Workbook.Worksheets[ "Sheet1" ]; 
     string myString = String.Format("{0}", worksheet.Cells[ 1, 1 ].Text); 
    } 

Répondre

1

accès non Essayez exclusif, comme celui-ci:

.... 
var stream = new FileStream(test.FullName, FileMode.Open, FileAccess.Read, 
          FileShare.ReadWrite); // <<< ---!! 

using (ExcelPackage package = new ExcelPackage(stream)) 
{ 
    ... 
} 
+0

Merci @Nikolay. Cela a fonctionné très bien! – mack