2017-05-10 9 views
0

EPPlusを使用して開いているExcel(xlsx)から読み込むことはできますか?ユーザーがExcel文書を開き、アドインボタンをクリックし、アクティブなワークシートからデータを読み込むことができるようにしたい。私はワークシートに書き込む必要はなく、読み込むだけです。VSTO Excel現在の公開ワークブックから読む

interopを使用すると、開いているワークブックのフルパスを取得できましたが、実際にワークブックにアクセスしようとするとI/Oエラーが発生しました。これを回避する方法は?

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); 
    } 

答えて

1

はこのように、非排他的なアクセスをお試しください:

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

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

おかげ@Nikolayを。これは素晴らしい仕事でした! – mack

関連する問題