我最初有一个代码段,它使用UsedRange这样遍历Excel电子表格的行:

           range = ws.UsedRange;
           for (int row = 3; row <= range.Rows.Count; row++)
            {
                Object nObj = ((Excel.Range)ws.Cells[row, "N"]).Text;
            }

但是我只需要获取应用过滤器后剩余的行,以便(查看如何使用Excel Interop获得过滤后的行的范围? ),我将代码更改为:

    range = ws.UsedRange.SpecialCells(Excel.XlCellType.xlCellTypeVisible, Type.Missing);
    foreach (Excel.Range area in range.Areas)
    {
        foreach (Excel.Range row in area.Rows)
            //for (int row = 3; row <= range.Rows.Count; row++)
            {
                Object nObj = ((Excel.Range)ws.Cells[row, "N"]).Text;
            }
    }

除了现在,我收到类型不匹配错误。 我在这里缺少什么基本的东西?

===============>>#1 票数:0 已采纳

我相信您在ws.Cells[row, "N"]的调用中遇到类型不匹配的情况。 在原始代码中, row是一个int 在修改后的代码中, row是一个Excel.Range

鉴于在修改后的代码中, row是单行(多列)范围,您需要做的只是索引到该行中与N列相对应的单元格。假设您的范围从A列开始,则将第14列中的单元格。

例如

Object nObj = ((Excel.Range)row.Cells[1, 14]).Text;

  ask by WildBill translate from so

未解决问题?本站智能推荐:

1回复

筛选后如何获取正确的行范围导致excel互操作

这是使用过滤范围时如何访问Excel Interop中的单元格的扩展? 为什么第一段代码迭代正确的行数,但是第二段继续超出行范围? 回顾一下: 遍历正确的行数,但不考虑过滤的行。 考虑到已过滤的行,但内部循环继续超出每个区域行数的范围。
1回复

如何在C#中修改Excel电子表格,另存为其他名称并删除原始电子表格

我有一个Windows Form应用程序,它为用户提供了一个打开对话框以打开电子表格。 该应用程序在该电子表格上执行一些任务,例如排序和删除空白行。 然后,完成后,它将使用当前日期作为新文件名的一部分执行SaveAs。 完成之后,我要删除原始电子表格。 我正在使用Micros
3回复

如何使用ColorDialog在C#/ Excel Interop中的文本框中放置文本

如何使用colorDialog将颜色的文本版本放入文本框? 我有一个文本框,单击旁边的按钮后会弹出colorDialog。 颜色的文字进入文本框,但最终结果为“颜色[绿色]”形式,而不仅仅是“绿色”形式。 有一个更好的方法吗。 我当前的代码如下:
2回复

Excel Interop COMException HRESULT:访问隐藏的单元格时为0x800A03EC

当单元格处于隐藏状态时,在使用C#使用Excel Interop从C#访问Excel中的命名单元格时出现问题,我这样访问它: 当我访问Range属性时,它会隐式调用get_range ,这是根据堆栈跟踪get_range异常的原因。 用于直接调用get_range的代码具有相似的结果。
1回复

从Excel Interop获取两个字符串时比较C#

当我使用Interop接口从Excel中提取两个字符串时,我正在尝试比较C#中的两个字符串。 我的代码如下: 我正在调试代码,并且看到e1和Node1确实是应该的相同字符串。 但是String.Compare对于s1返回1,对于s2返回-1。 救命!
1回复

使用Interop.Excel将C#与Excel单元格合并

我想合并几个单元格序列以形成表头分组。 我保留有关合并单元格的值及其列跨度的信息 这是我到目前为止的内容: 所以代替: 我懂了 似乎合并了1中的所有单元格。 有什么想法我做错了吗? 即使我只将columnCellIndex增加1,结果仍然不是我期望的。
2回复

C#-Microsoft.Office.Interop.Excel将excel中的所有行复制到另一个工作表中

我在目录中有3-4个excel文件,每个excel工作簿都包含1张纸。 每张纸的结构相同。 我想将所有工作表合并为一张。 我在VS 2008中使用Microsoft.Office.Interop.Excel程序包。如何复制一个工作表中的所有行并追加到另一工作表的末尾? 我是C#的新手,所
2回复

使用Excel Interop对行中使用的单元格进行计数

我想在工作表的每一行中获取最后使用的单元格的索引。 我可以得到整个工作表中的最后一个使用的列,但是我有一个表,其中每行都有不同的使用单元格,如下所示: 我尝试了这个: 我期望输出: 但实际输出是: 我使用Excel Interop库。 任何建议,将不胜感激。
3回复

如何使用MS interop excel检测c#中的合并单元格

我想在行/整张表中检测合并的单元格(最好)。这是我的代码 这段代码都没有 也不是这段代码(仅适用于row1) 似乎工作..请告诉我如何检查工作表/特定范围是否包含合并的单元格。
2回复

microsoft.interop.excel格式化单元格

我正在使用C#中的microsoft.interop.excel库构建报告。 我有这样的事情: 我希望范围显示其值作为整数,即没有小数位。 我尝试过rangeTarge.AutoFormat,但不知道如何使用它。 有任何想法吗 ? 谢谢。