C# 如何让excel加载项从工作表中读取行,直到没有更多数据?
我已经开始使用C编写Excel 2003的Com加载项。我正在寻找一个代码示例,演示如何从活动工作表中读取单元格数据。我看到您可以编写如下代码:C# 如何让excel加载项从工作表中读取行,直到没有更多数据?,c#,.net,excel,ms-office,vsto,C#,.net,Excel,Ms Office,Vsto,我已经开始使用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
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);
使用此代码,它应该找到最后一行,并在其第一列中结束 var lastExcel=worksheet.Rows.get_EndXlDirection.xlDown;
lastExcel.Cells[worksheet.Rows.get_EndXlDirection.xlUp.Row+1,1].Value2=End 命名范围听起来很有趣。我从您的示例中了解了如何检索命名范围。但是如何创建公式呢?您可以在工作表上选择要命名的区域,在单元格上方的左上角,在键入公式的位置的左侧有一个下拉列表;只需为您的范围键入一个名称,就可以了。美妙之处在于你可以在之后的工作表中使用它。例如,如果你把A1命名为Taxes,那么你可以输入A2=Taxes,它会起作用——这会使公式更容易阅读!hasContent不应该在do while开始时设置为false吗?现在看起来像是一个无限循环。