【问题标题】:Gembox null value breaking formulaGembox空值打破公式
【发布时间】:2016-06-16 08:12:18
【问题描述】:

我正在使用 C# 和 Gembox 创建 Excel 电子表格。

我在数据表中从 SQLServer 获取数据,我遇到这样一种情况,如果数据表中的单元格为空,将其放入 excel 对象会导致任何依赖于该 Excel 单元格的公式中断。

例如我明白了:

您可以看到,如果 P4 2015 列有一个空单元格,则 var 列中的公式会中断。如果我在 Excel 中选择单元格并按 Delete,然后输入公式即可。

所以 Gembox 将一些东西放入单元格中,这会破坏公式,但我不确定是什么。我试图检查 Null 值并插入一个空字符串,但这不起作用。

有没有人见过这个,或者知道如何解决它? (注意 - 我需要单元格为空 - 我不想在其中输入 0)。

【问题讨论】:

  • GemBox.Spreadsheet 如果没有任何值,则不会向单元格写入任何内容。不过,您使用的是什么版本的 GemBox.Spreadsheet?还有你有什么公式(我无法用简单的“=A1+B1+C1+D1”公式重现这个)?最后只是为了确认您使用 InsertDataTable 方法将 DataTable 导入 ExcelWorksheet,对吗?
  • @MarioZ Gembox 3.7 for .Net 4.5。该公式很简单,=E60-F60 并且数据与 excel 表不匹配,所以我循环遍历行/列以获得我需要的内容(创建上表是一组非常复杂的 SQL 查询) .我设法通过检查string.IsNullOrEmpty 并专门将null 对象插入Excel 单元格来解决。我现在将添加我的答案。

标签: c# gembox-spreadsheet


【解决方案1】:

我设法使用以下方法解决了这个错误:

基本上,我会检查要插入 Excel 单元格的值 - 如果它是空字符串,则为空字符串,然后我专门将 null 插入到电子表格中。

if (string.IsNullOrWhiteSpace(value))
{
    worksheet.Cells[columnCode + row].Value = null;
    format = "0";
}
else
{
    //insert as normal...
}

我认为我遇到的所有问题都是由插入电子表格数字列的空字符串引起的。

【讨论】:

    猜你喜欢
    • 2011-02-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多