C#: 使用Excel.interop获取单元格的值

4
我希望使用C#软件从Excel文件中获取单元格的值;不是文本,因为文本会根据列的大小而变化,我不能自己更改,软件也不应受此干扰。因此,我的选择是获取该值。
我将单元格作为1:1范围进行获取,因此我有一个Range对象,但是Value字段和Value2字段无法被该语言识别。我尝试使用get_Value()但它需要一个参数,我不知道要放什么参数,我没有找到相关文档。以下是我的代码(从循环中提取):
  if((string)(ws_Varsheet.get_Range("L" + iIndex, "L" + iIndex).Text) != "")
  {

    rng_ResolutionCell = ws_Varsheet.get_Range("L" + iIndex, "L" + iIndex);   
    float iResolution;
    rng_ResolutionCell.Cells.get_Value(&iResolution); //what to do here?
    str_Resolution = ((string)iResolution.toString()).Replace(",",".");
    str_Resolution = str_Resolution.Replace(" ","");
     mObj.Str_Resolution="1";
  }

你能帮我处理这个吗?先谢谢了。

3个回答

8

我经常发现代码比必要的复杂。基本上,读取单元格就像这样简单:

Xl.Range rng = sheet.Cells[row, column] as Xl.Range;
return rng.Value2;

3
根据文档,Value2属性将日期和货币视为数字。如果需要DateTime对象,则必须使用get_Value。请注意,我已经尽力使翻译内容更加通俗易懂,但并未改变原本的意思。 - Carl Pritchett
1
请注意,X1是Microsoft.Office.Interop.Excel的别名。 - John

2

根据MSDN上的这篇文章,看起来您需要类似以下的内容:

var cellRangeValue = rng_ResolutionCell.get_Value(System.Type.Missing);

-1

另外:

newWS = (Microsoft.Office.Interop.Excel.Worksheet)newWB.Worksheets[2];
newWS.Select();
string ExcelCellContent = (string)newWS.Cells[2, 1].Value2;

使用方法:

if((string)(ws_Varsheet.Cells[x, y].Value2 != "")
{
   // process
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接