从2个.xls文件打开工作簿时,这些工作簿在后台可见。通常这是不可取的,因为它看起来不太好,但也会减慢程序速度。
有关此问题的问题曾经被提出过,但是没有一个答案可以解决问题。我从.xls文件读取数据的方式如下;
xlApp = new Microsoft.Office.Interop.Excel.Application();
xlWorkbook1 = xlApp.Workbooks.Open(path1);
xlWorksheet1 = (Microsoft.Office.Interop.Excel.Worksheet) xlWorkbook1.Worksheets.get_Item(1);
xlWorkbook2 = xlApp.Workbooks.Open(path2);
xlWorksheet2 = (Microsoft.Office.Interop.Excel.Worksheet) xlWorkbook2.Worksheets.get_Item(1);
我尝试了以下几种方法来打开工作簿,同时防止它们显示出来;
1。
xlApp = new Microsoft.Office.Interop.Excel.Application() { Visible = false };
xlWorkbook1 = xlApp.Workbooks.Open(path1);
xlWorksheet1 = (Microsoft.Office.Interop.Excel.Worksheet) xlWorkbook1.Worksheets.get_Item(1);
xlWorkbook2 = xlApp.Workbooks.Open(path2);
xlWorksheet2 = (Microsoft.Office.Interop.Excel.Worksheet) xlWorkbook2.Worksheets.get_Item(1);
2。
xlApp = new Microsoft.Office.Interop.Excel.Application();
xlApp.Visible = false;
xlApp.DisplayAlerts = false;
xlWorkbook1 = xlApp.Workbooks.Open(path1);
xlWorksheet1 = (Microsoft.Office.Interop.Excel.Worksheet) xlWorkbook1.Worksheets.get_Item(1);
xlWorkbook2 = xlApp.Workbooks.Open(path2);
xlWorksheet2 = (Microsoft.Office.Interop.Excel.Worksheet) xlWorkbook2.Worksheets.get_Item(1);
3。
xlApp = new Microsoft.Office.Interop.Excel.Application();
xlWorkbook1 = xlApp.Workbooks.Open(path1);
xlWorksheet1 = (Microsoft.Office.Interop.Excel.Worksheet) xlWorkbook1.Worksheets.get_Item(1);
xlWorkbook2 = xlApp.Workbooks.Open(path2);
xlWorksheet2 = (Microsoft.Office.Interop.Excel.Worksheet) xlWorkbook2.Worksheets.get_Item(1);
xlApp.Visible = false;
xlApp.DisplayAlerts = false;
方法3确实隐藏了工作簿,但是首先打开了工作簿,因此不能解决问题。我也尝试过以只读方式打开工作簿,但这似乎没有什么不同。我还需要能够写工作簿,因此以只读方式打开它们是没有选择的。无论如何,它并不能解决问题,但我只是在说明它,因此不会被建议作为解决方案。
有人知道如何实现所需的行为吗?
注意:我正在使用Windows 10。
答案 0 :(得分:1)
我使用NetOffice.ExcelApi读取Excel文件。我为此创建了一个类。这不应显示Excel文件或Excel本身。不要忘记关闭并处理该文件,否则Excel将继续在后台运行,这可能会使您的PC崩溃。
using NetOffice.ExcelApi;
public class ExcelFile
{
private Application _excelApp;
private readonly Workbook _workbook;
private Range _range;
private ExcelFile(string path)
{
_excelApp = new Application();
_workbook = _excelApp.Workbooks.Open(path);
}
private void CloseFile()
{
_workbook.Close(0);
_excelApp.Quit();
_excelApp.Dispose();
}
}
答案 1 :(得分:0)
显然,该文件处于共享模式,这使文件显示出来。我已经关闭了共享模式,现在已修复。
答案 2 :(得分:-1)
xlApp.Visible = false;
尝试使用此代码