从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。
我使用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();
}
}
显然,该文件处于共享模式,这使文件显示出来。我已关闭共享模式,现在已修复。
xlApp.Visible = false;
尝试使用此代码