其他分享
首页 > 其他分享> > CodeGo.net>如何让一个Excel插件从工作表中读取行,直到没有更多的数据?

CodeGo.net>如何让一个Excel插件从工作表中读取行,直到没有更多的数据?

作者:互联网

我已经开始使用C#为Excel 2003编写Com插件.我正在寻找一个代码示例,该示例显示如何从活动工作表中读取单元格数据.我已经看到您可以编写如下代码:

Excel.Range firstCell = ws.get_Range("A1", Type.Missing);
Excel.Range lastCell = ws.get_Range("A10", Type.Missing);
Excel.Range worksheetCells = ws.get_Range(firstCell, lastCell);

抓取一系列的细胞.我可以使用的帮助是当您不知道有多少行数据时如何读取单元格数据.我也许能够确定数据将在其开始的起始行,但是要读取的数据行数却不多.

有人可以为我提供一个示例,该示例如何从工作表中读取行,直到遇到一排空单元格为止?

还有谁知道如何获取用户选择的单元格范围?

任何帮助将不胜感激.这似乎是一个功能强大的开发工具,但我在查找详细文档以帮助我学习时遇到了麻烦:)

解决方法:

我可以想到两种方法.第一个选择是使用命名范围,而不是单元格的位置.在这种情况下,您可以使用实例名称A1:A10“ MyList”,并使用以下命令将内容读取到数组中

Excel.Range range = worksheet.get_Range("MyList", Type.Missing);
object[,] data = (object[,])range.Value2;

好处是,如果您调整命名范围的大小(例如,通过在工作表中插入行或列),这仍然可以正常工作.
您也可以读取直到遇到空单元格或空单元格,但是您必须逐个单元格地读取.如果单元格很少,这不是问题,但是如果您要处理大量数据(例如100个单元格),则逐个单元地读取数据会浪费您的速度.我还没有尝试过代码,但是应该遵循以下几行从startRow开始,直到发现空行:

     int startRow = 1;
     bool hasContent = false;

     int row = startRow;
     do
     {
        var cell = (Excel.Range)sheet.Cells[row,1];
        if (cell.Value2 != null)
        {
           hasContent = true;
           row++;
        }
     }
     while (hasContent);

标签:ms-office,c,net,excel,vsto
来源: https://codeday.me/bug/20191210/2099030.html