C# EPPLUS无法获取单元格值

10

我有一个单元格"A1"的值为1.00,是通过公式设置的。

我想将这个值保存到一个变量中。

我尝试过:

ws.Cells["A1"].Value
ws.Cells["A1"].Text
ws.Cells["A1"].GetValue<double>
ws.Cells["A1"].Value.ToString()

这些方法都没用,我要么遇到错误,要么根本得不到我的数值(console.writeline 输出为空)。

我在网上搜索尝试了以上方法。我知道我正确引用了单元格,因为我可以轻松设置值。

那么,我该如何获取我的值 1.00 并将其保存在 double 变量中呢?

编辑:我的代码中,filePath 工作表的 "A1" 单元格的值为 1.00。

using (var pck = new ExcelPackage(filePath))
{
   var ws = pck.Workbook.Worksheets[1];

   var test1 = ws.Cells["A1"].Value;
   var test2 = ws.Cells["A1"].Text;
   var test3 = ws.Cells["A1"].GetValue<double>();

   Console.WriteLine(test1);
   Console.WriteLine(test2);
   Console.WriteLine(test3);
 }

输出结果为:

[blank]
[blank]
0

编辑2:1.00的值来自一个公式。


只是在检查,你的代码是否有类似于 Double myVar = ws.cells["A1"].Value 的内容? - andrew
@andrew 当我这样做时,会出现一个错误,说无法将对象类型转换为双精度。我确实有var ws.cells ["A1"] .Value - somethingstrang
我已经使用了类似以下的代码.. decimal myDec = (decimal)ws.Cells["A1"].Value 成功; 你可以尝试这样做 - 改为转换为Double。另外,在你上面的编辑中,你将ws分配给了工作表,但是后面却使用了未被分配的comparisonWS? - andrew
1
我注意到你正在使用 var ws = pck.Workbook.Worksheets[1];。与Excel COM对象模型不同,索引从0开始,因此这将选择工作簿中的第二个工作表。这是你想要的吗? - Joe
@Joe - 你确定吗?因为我可以很好地设置和更改单元格的值。 - somethingstrang
显示剩余3条评论
2个回答

8
使用行和列索引获取单元格的值。这个值是字符串类型。 将字符串值转换为浮点数。
请尝试以下内容:
var ws = pck.Workbook.Worksheets[1];

//var test1 = ws.Cells[rowIndex, columnIndex].Value;
//For cell A1 - rowIndex is 1, columnIndex is 1
var test1 = ws.Cells[1, 1].Value;
double dValue = Convert.ToDouble(test1);

2
请在您的回答中添加更多解释。因为它太短,所以被标记为低质量。 - dingo_d

3

非常抱歉给您带来麻烦。通过执行ws.Cell["A1"].Calculate(),我可以获取到值。很抱歉没有在之前提到这一点。


1
即使我调用了Calculate(),我仍然收到错误信息。请帮忙! - Bogdan Banciu

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