C#Interop获取特定列

时间:2017-03-09 13:10:37

标签: c# excel interop

我尝试使用特定列中的数据获取最后一行,并且在运行代码时出现以下错误:

  

无法获取WorksheetFunction类的CountA属性

var xlApp = new Microsoft.Office.Interop.Excel.Application();
var wb = (Excel.Workbook)Globals.ThisAddIn.Application.ActiveWorkbook;
var wsConfig = wb.Sheets["Config"];

var usedRows = xlApp.WorksheetFunction.CountA(wsConfig.Columns[9]);

还尝试了以下代码,但返回:

  

HRESULT的异常:0x800A03EC

var usedRows = wsConfig.Range["I1", wsConfig.Cells[1, wsConfig.Rows.Count]].End(Excel.XlDirection.xlDown).Value;

示例:

第I栏 | 1 |
| 2 |
| 3 |
| 4 |
| 5 |
| |

=> usedRows = 5因为列I上有5行数据

2 个答案:

答案 0 :(得分:1)

获取列中最后一行(例如A)的经典方法是:

last = Sheets("Sheet1").Range("A" & Sheets("Sheet1").Rows.Count).End(xlUp).Row

哪个'工作表中的最后一个可用行(从版本到版本的更改)一直向上,直到您点击一个带有值的单元格 - 最后一行。

您可以在示例中使用(对于专栏I)写下此内容:

var usedRows = wsConfig.Range["I" + wsConfig.Rows.Count.ToString()].End(Excel.XlDirection.xlUp).Row;

答案 1 :(得分:0)

我知道这已经有几岁了,但只是以为我会把它放在这里。可接受的答案可能需要对C#元素进行一些调整,因为它对我而言并不奏效。因此,我将其修改为以下内容:

var usedRows = wsConfig.Range["I" + wsconfig.Rows.Count.ToString()].End[Excel.XlDirection.xlUp]