【发布时间】:2011-05-30 04:32:37
【问题描述】:
我正在以编程方式读取 C# 中的 Excel 文件。
当我使用 Excel.Worksheet.Columns.columns.count 时,我得到的值超过 16,000。
但我的 Excel 表只有 15 列。如何仅获取那些具有值的列?
【问题讨论】:
标签: c# excel excel-2007
我正在以编程方式读取 C# 中的 Excel 文件。
当我使用 Excel.Worksheet.Columns.columns.count 时,我得到的值超过 16,000。
但我的 Excel 表只有 15 列。如何仅获取那些具有值的列?
【问题讨论】:
标签: c# excel excel-2007
这是我通常的做法:
Excel.Application demoApp= new Excel.Application();
demoApp.Workbooks.Open(fileName);
int rowCount = demoApp.ActiveSheet.UsedRange.Rows.Count;
int colCount = demoApp.ActiveSheet.UsedRange.Columns.Count;
所以,关键是使用UsedRange,希望对你有所帮助。
【讨论】:
在尝试自动化 Excel 时,您可以先弄清楚如何在 Excel 中做您想做的事情,然后找出使用自动化 API 实现这一目标的方法。
假设您正在使用“真正的”Excel,并且您将活动单元格放置在包含您要缩小到的列的行的最末端。让我们为第一行的最后一列说“XFD1”。这就是 16,000 多个数字的来源。
要到达最后一个包含非空值的单元格,您可以按End 键进入“结束模式”,然后按Left Arrow,这会将您的电子表格的活动单元格定位在第 15 列,或地址为“O1”的“O”列。
“结束模式”的等效 C# 自动化 API 是什么?它是Range.End 函数。这是一个描述:
下面是End 函数的一些 VBA 示例:
多年来,Excel 没有太大变化,因此这些 VBA 示例非常流行并且仍然非常有用,即使您必须将语法转换为 C#。
如果您可以在 Excel 本身中执行此操作,您可能可以使用自动化 API 执行此操作!
【讨论】: