C# 如何使用 Interop 从 Excel 读取和写入数据,而不使 Excel 可见?

布拉姆

从 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。

布拉姆

显然,该文件处于共享模式,这使该文件显示出来。我已关闭共享模式,现在已修复。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何从C#(Microsoft.Office.Interop.Excel)中的数据透视表对象获取可见的PivotField对象

C# COM Interop Excel:如何使用 Interop Excel 从 C# 写入单元格?

C#使用Microsoft.Office.Interop.Excel读取数据

如何使用Interop C#隐藏Excel列和行

使用 Excel.Interop C# 保存覆盖和更改

如何合并Excel范围Interop C#

如何打开可见的excel完整尺寸?

使用Microsoft Office Interop Excel使用C#在excel图表中自定义数据标签

如何使用Pandas从Excel中仅读取可见的工作表?

如何在C#中设置Excel工作簿可见性

筛选后,如何在Excel中选择和删除可见行?

如何使用Excel Interop获取CustomDocumentProperties?

通过VBA可见和不可见的Excel对象图表

C# 使用 Excel Interop 添加辅助轴

如何复制具有不同名称的工作表-C#和Excel Interop

C#Excel Interop:如何以像素为单位设置单元格的高度和宽度?

如何使多个PivotItem在Excel VBA中可见

如何正确计算VBA Excel中的可见行?

使用Interop C#在Microsoft Excel中检测数据透视表

使用Excel Interop C#筛选出数据透视表中的(空白)行

使用Microsoft.Office.Interop.Excel的C#从其他WorkSheet添加新系列和范围

使用Excel公式列出可见的枢轴项目

使用vba检查列是否在excel中可见

如何在C#中使用Microsoft.Office.Interop.Excel添加数据透视表筛选器

C#Interop Excel:将一维数组写入Excel范围

使用Microsoft.Office.Interop Word和Excel

使用SXSSFWorkbook创建Excel并使用XSSFWorkbook修改excel时,字符串单元格数据在excel编辑器中不可见

如何通过Office.Interop.Excel C#打开Excel文件的流或base64

C#阅读使用的Microsoft.Office.Interop.Excel Excel单元格的值