Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/292.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何在不显示Excel窗口的情况下按文件名打开工作簿?_C#_Excel_Office Interop - Fatal编程技术网

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

C# 如何在不显示Excel窗口的情况下按文件名打开工作簿?,c#,excel,office-interop,C#,Excel,Office Interop,我通过

我通过
获得
当前WRKBook
,代码如下:

using Excel = Microsoft.Office.Interop.Excel;
...
Excel.Workbook currentWrkBook = Excel.Application.Workbooks.Open(fileName);
...
结果get OK(当运行到上述语句时,文件名
[D:/DataProject/Resources.xlsm]
打开):

现在,我想按文件名获取currentWrkBook,而不打开文件


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

尝试从新的应用程序对象打开文件:

var excel = new Excel.Application();
var workbook = excel.Workbooks.Open(filename);
您可能已经运行了excel实例,然后新工作簿也将可见

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


我似乎可以通过以只读模式打开文件来实现这一点。对我来说,这已经足够好了,因为我只需要读取数据

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将以可见方式打开该文件

你想用这个实现什么?因为每次运行时,文件名都会被打开,很烦人,所以我想把它隐藏起来。所以,你仍然想打开文件,只是对用户隐藏excel应用程序。在这种情况下,请将属性设置为false。另外,这个问题可能有用:谢谢你的回答。这种方法我以前试过,但不行。文件名已打开,文件名已隐藏。我认为没有办法不打开可以获取工作簿的文件名。因为使用方法open()肯定会打开文件名。第一次打开后,将Application.Visible属性设置为false,它将隐藏。所以我认为没有办法做到这一点。当然,有办法做到这一点:)不过,你需要更具体一些。这个文件已经打开了吗?它是由您的应用程序打开的还是其他应用程序打开的?另外,我已经更新了我的答案,请参见编辑。我的问题是我的文件名尚未打开。Excel应用程序正在打开另一个文件。^我理解。谢谢你的努力!
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
}