相关疑难解决方法(0)

如何在excel表中获取被占用单元格的范围

我使用C#来自动化excel文件.我能够获得它包含的工作簿和工作表.例如,我在sheet1中有两个cols和5行.我希望o获得被占用单元格的范围为A1:B5.我尝试了以下代码,但没有给出正确的结果.列#和行#更大,单元格也是空的.

     Excel.Range xlRange = excelWorksheet.UsedRange;
     int col = xlRange.Columns.Count;
     int row = xlRange.Rows.Count;
Run Code Online (Sandbox Code Playgroud)

有没有其他方法可以用来获得该范围?

c# excel automation

35
推荐指数
3
解决办法
10万
查看次数

关闭过滤器

所以,我正在Excel文档中进行一些搜索,但是其他人打开过滤器并让它们保持打开是很常见的.当这些过滤器打开时,这些单元格不包含在工作表的单元格区域中.

有没有办法关闭这些自定义过滤器,以便我仍然可以到达工作表中的所有单元格?

这是我用来查找方法的方法

Microsoft.Office.Interop.Excel.Range find = sheet.Cells.Find(tapeID, Type.Missing,
Microsoft.Office.Interop.Excel.XlFindLookIn.xlValues, Microsoft.Office.Interop.Excel.XlLookAt.xlPart, 
Microsoft.Office.Interop.Excel.XlSearchOrder.xlByRows, Microsoft.Office.Interop.Excel.XlSearchDirection.xlNext, false, Type.Missing, Type.Missing); 
Run Code Online (Sandbox Code Playgroud)

当过滤器打开时,我得到一个返回的null对象,除了关闭过滤器之外无法做任何事情,我得到了我需要的东西.

有关关闭过滤器的任何提示吗?

c# excel

10
推荐指数
1
解决办法
9984
查看次数

获取Excel范围对象的最后一个单元格(列,行)

我有一个Microsoft.Office.Interop.Excel.Range对象,想要估计该范围的最终坐标即(最后一列,最后一行).

有喜欢的任何属性LastCol,LastRow.唯一属性是ColumnRow,它们指定第一个单元格.但是如何才能获得该范围的最后一个单元格?

c# excel vsto

7
推荐指数
2
解决办法
2万
查看次数

Excel Interop - 如何更改命名范围

我有一个模板 excel 文件,我将数据从 SQL Server OLEDB 连接器填充到其中。该文件包含一些数据透视表,这些数据透视表引用了数据库正在填充的数据集。

目前我所做的是使用“Data!$A:$K”范围选择工作表中的所有行。这会导致数据透视表中显示空白值的问题。

我想要做的是在数据集上创建一个命名表并将数据透视表引用到它(另外我获得了命名表带来的其他一些优势)。

行数自然没有设置,所以我想找到一种方法将命名范围范围设置为仅实际值。

我为此使用 Excel Interop 和 C#,但找不到更改范围的方法。我只得到了:

oRng = oSheet.get_Range("Transactions");
Run Code Online (Sandbox Code Playgroud)

其中选择命名范围。但是如何更改属于它的单元格?

或者我应该追求更好的解决方案吗?

编辑

动态范围就是答案!

感谢@TimWilliams 的回复,我解决了这个问题:

“在模板中使用动态范围:http : //ozgrid.com/Excel/DynamicRanges.htm

我觉得动态范围在这里描述得更好:http : //www.contextures.com/xlpivot01.html

我遇到了一个小问题,我无法使用数据透视表中的范围,因为它要求它至少需要 2 行才能操作——模板文件只有列标题。我在第二行的第一个单元格中添加了一个随机字符串,数据透视表接受了这一点。

之后我不得不使用 c# 代码删除该行。

谢谢你们的帮助。

c# excel excel-interop

5
推荐指数
1
解决办法
7543
查看次数

标签 统计

c# ×4

excel ×4

automation ×1

excel-interop ×1

vsto ×1