如何仅获取 EXCEL 工作表中具有值的列

发布于 2024-11-10 03:18:19 字数 161 浏览 3 评论 0原文

我正在用 C# 以编程方式读取 Excel 文件。

当我使用 Excel.Worksheet.Columns.columns.count 时,我得到的值高于 16,000。

但我的 Excel 工作表只有 15 列。如何仅获取那些具有值的列

I am programatically reading an Excel file in C#.

When I use Excel.Worksheet.Columns.columns.count, I get a value above 16,000.

But my excel sheet has only 15 columns. How do I get only those columns that have a value?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

拔了角的鹿 2024-11-17 03:18:19

这是我通常这样做的:

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,我希望这会有所帮助。

Here is how I usually do this:

Excel.Application demoApp= new Excel.Application();
demoApp.Workbooks.Open(fileName);
int rowCount = demoApp.ActiveSheet.UsedRange.Rows.Count;
int colCount = demoApp.ActiveSheet.UsedRange.Columns.Count;

so, the key is to use UsedRange, I hope this will help.

甜心小果奶 2024-11-17 03:18:19

当尝试自动化 Excel 时,您可以首先弄清楚如何在 Excel 中执行您想要的操作,然后找出使用自动化 API 实现这一目标的方法。

想象一下,您正在使用“真正的”Excel,并将活动单元格放置在包含您要缩小范围的列的行的最末尾。让我们为第一行的最后一列说“XFD1”。这就是 16,000+ 数字的来源。

要到达包含非空值的最后一个单元格,您可以按End键进入“结束模式”,然后按向左箭头,这将定位电子表格第 15 列或地址为“O1”的“O”列中的活动单元格。

“结束模式”的等效 C# 自动化 API 是什么?它是 Range.End 函数。以下是描述:

,以下是 End 函数的一些 VBA 示例:

Excel 多年来没有太大变化,因此这些 VBA 示例非常流行,并且仍然非常有用,即使您必须翻译语法到 C#。

如果您可以在 Excel 中完成此操作,那么您也可以使用自动化 API 来完成此操作!

When trying to automate Excel, you can first figure out how to do what you want in Excel, then figure out the way to make that happen using the automation API.

Imagine you are using the "real" Excel and you position the active cell at the very end of the row that contains the columns you are trying to narrow down to. Lets say "XFD1" for that last column of the first row. This is where the 16,000+ number comes from.

To get to the last cell that contains a non-empty value, you can press the End key to enter "End Mode" and then press Left Arrow and this will position the active cell, for your spreadsheet, in column 15, or column "O" with address "O1".

What is the equivalent C# automation API for "End Mode"? It is the Range.End function. Here is a description:

and here are some VBA examples of the End function:

Excel hasn't changed much over the years so these VBA examples are very prevalent and still quite useful, even if you have to translate the syntax to C#.

If you can do it in Excel itself, you can probably do it using the automation API!

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文