将可为空的整数值写回电子表格

Write nullable integer values back to spreadsheet

我正在使用 Excel 作为我的桌面应用程序的报告工具。该应用程序是用 C# (VS 2019) 编写的。

我的代码的要点是从工作表中获取一个范围对象,填充一个可以为 null 的整数数组,然后将其写回同一个工作表。

到目前为止,我已经获得了一系列单元格,其中 startRow 是第一行以黄色突出显示:

Range startRow = (Range) input.Range["E" + row.ToString(), "K" + row.ToString()];

初始化本地数组为:

double?[,] startArray = new double?[1, 7];

设置相关值:

startArray[1,2] = 9.75;

最后,写回数据:

  startRow.Value2 = startArray;

当我写回数组时,出现错误

The parameter is incorrect. (Exception from HRESULT: 0x80070057 (E_INVALIDARG))

在这种情况下,我假设这是因为我在数组中有一些可为空的值,就好像我没有使用可为空的数组一样,因此它的值默认为零,这是有效的好的,但是我在电子表格中清零了。

我试过使用:

string[,] startArray = new string[1, 7];

这确实有效,但任何有值的字段都不会被视为数字,并导致 Excel 公式无效。

所以对于我的问题,我能否让数组用空值写回 Excel,或者我是否必须恢复使用单元格对象并仅更新包含值的单元格?

碰巧,正是写这篇 post 的事实使我能够修复它。

简单的答案是只将包含值的值直接写入范围。

所以像这样:

for (int i = 0; i < 7; i++)
{
    if (startArray[0, i] != null) startRow[1, i + 1] = startArray[0, i];
}

至于 EPPlus,它看起来是一个很棒的产品,但由于我已经支付了 Excel 许可证,所以我会发现这有点过头了,因为 EPPlus 也需要付费许可证。