gpt4 book ai didi

c# - Excel 互操作工作表列表有额外的工作表,UsedRange 没有数据

转载 作者:行者123 更新时间:2023-11-30 21:56:12 26 4
gpt4 key购买 nike

我正在使用 C# 中的 Excel Office Interop。 (在 VS 2013 中)。我正在使用 Excel 工作簿,该工作簿是在 Office 2010 Professional Plus 附带的 Excel 版本中创建的。该工作簿的扩展名为 .xlsx。

当我在 Excel 中打开工作簿时,它有 4 个工作表可见,但是当我使用互操作打开它时,Worksheets 集合包含具有许多其他名称的工作表,如下所示:

Icons 
International URLs
International Settings
DropdownSizer
International Translastions
Data Validation
International Data

然后在该列表之后,工作簿选项卡中可见的工作表最终出现。但是,当我尝试获取任何工作表的 UsedRange 时,其中没有数据。

我的代码适用于从同一 Office/Excel 安装创建的其他工作簿,这些工作簿只有一张纸。

以下是我的代码中的一些混合在一起的片段,其中删除了注释、空检查、调试代码等:

private Excel.Application xlApp;
private Excel.Workbook xlWorkbook;
private Excel.Worksheet xlWorksheet;
public Excel.Range usedRange;

public void Open(string pathname, int sheetNum = 1) {
xlApp = new Excel.Application();
xlWorkbook = xlApp.Workbooks.Open(pathname, 0, true, 5, "", "", true, Excel.XlPlatform.xlWindows, "\t", false, false, 0, true, 1, 0);
xlWorksheet = (Excel.Worksheet)xlWorkbook.Sheets.get_Item(sheetNum);
usedRange = xlWorksheet.UsedRange;
}

public string[] GetSheetNames() {
var sheetNames = new List<string>();
foreach (Excel.Worksheet worksheet in xlApp.Worksheets) {
sheetNames.Add(worksheet.Name);
}
return sheetNames.ToArray();
}

public void SetCurrentSheet(int sheetNum) {
usedRange = xlWorkbook.Worksheets[sheetNum].UsedRange;
}

我试过使用 xlWorkbook.Worksheets 而不是 xlApp.Worksheets。没有区别。

当我在 Excel 中打开工作簿时,如何才能只获取选项卡中显示的工作表?

完成后,如何获取每张表中的数据?

最佳答案

如果您需要过滤您的 sheetNames 列表以仅包含可见的工作表,您可以尝试以下操作:

foreach (Excel.Worksheet worksheet in xlApp.Worksheets)
{
if (worksheet.Visible == XlSheetVisibility.xlSheetVisible)
{
sheetNames.Add(worksheet.Name);
}
}

I've tried using the xlWorkbook.Worksheets instead of xlApp.Worksheets. No difference.

文档说 Application.Worksheets 属性返回事件工作簿中所有工作表的集合。由于当前事件的工作簿与您的 xlWorkbook 变量引用的对象是同一对象,因此没有任何区别。

关于c# - Excel 互操作工作表列表有额外的工作表,UsedRange 没有数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31684377/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com