简体   繁体   English

VSTO Excel从当前打开的工作簿中读取

[英]VSTO Excel Read from Current Open Workbook

Is it possible to read from an open Excel (xlsx) using EPPlus? 是否可以使用EPPlus从打开的Excel(xlsx)中读取? I want the user to be able to open an Excel document, click the Add-In button and read data from the active worksheet. 我希望用户能够打开Excel文档,单击“加载项”按钮并从活动工作表中读取数据。 I don't need to write to the worksheet, only read from it. 我不需要写工作表,只需要阅读它即可。

Using interop I was able to get the full path to the open workbook but when I tried to actually access the workbook I got an I/O error. 使用interop,我可以获得打开的工作簿的完整路径,但是当我尝试实际访问工作簿时,出现了I / O错误。 Any ideas how to get around this? 任何想法如何解决这个问题?

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

Try non-exclusive access, like this: 尝试非独占访问,如下所示:

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

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

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM