【问题标题】:How to insert an array to a single row in Excel using ClosedXML如何使用 ClosedXML 将数组插入 Excel 中的单行
【发布时间】:2017-07-10 11:56:16
【问题描述】:

我有一个数组,我需要将元素放在一行中,数组的每个元素都应该在不同的单元格中。

foreach (var cell in range.Cells())
        {
            int index = 0;
            cell.Value = arrayCompany[index];
            index++;

            if (index == count)
            {
                break;
            }
        }

我的数组有 10 个元素,excel 文件生成一行,但在所有 10 列中,单元格值是数组的最后一个元素。我希望每个元素都在不同的列中。 A1=arrayCompany[0],B1=arrayCompany[1] ... 10thcolumn = arrayCompany[9]

【问题讨论】:

  • 请详细说明您想要发生的事情、当前代码的作用以及我与您期望的不同之处。一些示例/示例会更好。
  • 我的数组有 10 个元素,excel 文件生成一行,但在所有 10 列中,单元格值是数组的最后一个元素。我希望每个元素都在不同的列中。 A1=arrayCompany[0],B1=arrayCompany[1] ... 10thcolumn = arrayCompany[9]
  • 请更新您的帖子,而不是添加 cmets。

标签: c# excel arraylist closedxml


【解决方案1】:

你可以使用

cell.InsertData(data: yourEnumerable, transpose: true);

注意transpose 参数,它允许您将值插入一行。默认情况下,可枚举的值将被插入到彼此的下方。

【讨论】:

  • 转置是要注意的重点,我错了 30 分钟以上,因为我错过了转置并且数据被覆盖了。
  • @surpavan 我更新了答案以突出显示transpose 参数。
【解决方案2】:
            for (int index = 0; index < 10; index++)
            {
                var cell = range.Cell(1, index + 1);
                cell.Value = arrayCompany[index];
            }

这是可行的,但我想有一个更干净的解决方案。

【讨论】:

    【解决方案3】:

    我用过这个:

    worksheet.Cell(x, y).Value = toExport.AsEnumerable();
    

    我的toExport 变量是一个对象列表。它不仅将所有属性枚举到列中,还将每个实例插入到新行中。

    这也可能适用于数组。

    【讨论】:

    • 我已经尝试过这个解决方案,但它会将每个元素都插入到新行中。我想将所有元素插入一行,这意味着每个元素都在不同的列中。
    猜你喜欢
    • 2022-11-21
    • 1970-01-01
    • 2013-02-18
    • 2018-01-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-07-23
    • 1970-01-01
    相关资源
    最近更新 更多