如何在不显示Excel窗口的情况下按文件名打开工作簿?

时间:2016-10-25 03:49:05

标签: c# excel office-interop

currentWrkBook fileName ,代码如下:

using Excel = Microsoft.Office.Interop.Excel;
...
Excel.Workbook currentWrkBook = Excel.Application.Workbooks.Open(fileName);
...

结果变为OK(运行到上面的语句时,fileName [D:/DataProject/Resources.xlsm]已打开):

enter image description here

现在,我想通过fileName获取currentWrkBook而不打开文件。

这可能吗?任何有关这些的提示都将是很有帮助的。提前谢谢。

2 个答案:

答案 0 :(得分:1)

尝试从新的Application对象中打开文件:

var excel = new Excel.Application();
var workbook = excel.Workbooks.Open(filename);

有可能,你已经运行了excel实例,那么新的工作簿也会变得可见。

编辑:如果您需要获取已打开的工作簿的参考,您可以获取它by name

Excel.Workbook currentWrkBook = Excel.Application.Workbooks[fileName];

答案 1 :(得分:0)

我似乎可以通过以只读模式打开文件来完成此操作。对我来说,这很好,因为我只需要阅读数据。

var oXL = new Microsoft.Office.Interop.Excel.Application();
oXL.Visible = false;

Workbook Wbook = oXL.Workbooks.Open(txtFileName.Text, ReadOnly: true, Password: "password");

var sheet = Wbook.Worksheets[1];

foreach (Range row in sheet.UsedRange.Rows)
{
    var firstName = sheet.Cells[row.Row, 1].Value2,
    var lastName = sheet.Cells[row.Row, 2].Value2
}

如果我将ReadOnly参数切换为false,则Excel将显示该文件。