【问题标题】:How to copy data into Excel range formatted as table and not lose table formatting如何将数据复制到格式化为表格的 Excel 范围内并且不会丢失表格格式
【发布时间】:2016-02-06 19:52:09
【问题描述】:

有谁知道如何通过 C# 将数据复制到 Excel 中的表格范围中,并且不会丢失表格格式?

每次我将数据复制到范围时,它都会丢失之前设置的格式。

private object[,] Get2DArrayData()
    {
        var obj = new object[2, 4];
        obj[0, 0] = "Header1";
        obj[0, 1] = "Header2";
        obj[0, 2] = "Header3";
        obj[0, 3] = "Header4";
        obj[1, 0] = 1;
        obj[1, 1] = 2;
        obj[1, 2] = 3;
        obj[1, 3] = 4;
        return obj;
    }

    private void button1_Click(object sender, RibbonControlEventArgs e)
    {
        var worksheet = Globals.ThisAddIn.Application.ActiveSheet;
        Range range = worksheet.Range["A1:D2"];
        Excel.ListObject obj = worksheet.ListObjects.Add(Excel.XlListObjectSourceType.xlSrcRange, range, null, Excel.XlYesNoGuess.xlYes, null);
        obj.TableStyle = "TableStyleMedium3";
        obj.Name = "MyTableNamedRange";
        //table style is lost after setting Value2 on the range
        range.Value2 = Get2DArrayData();
    }

每次我将数组数据粘贴到 Value2 时,ListObject 都会被清除。有没有办法不丢失这种格式?无法在添加到 ListObjects 属性之前设置 Value2 属性。

【问题讨论】:

  • 我认为你需要在这里扩展你的代码。
  • 再次,代码太少,看不到发生了什么。您需要提供足够的信息,以便我们可以看到正在发生的事情。我们不知道 Get2DArrayData() 做了什么,或者 Value2 在您的范围对象内是什么。请查看stackoverflow.com/help/mcve,然后更新您的问题,以便我们提供帮助
  • Get2DArrayData 在这种情况下并不重要。它只是返回一个多维对象数组(即object[,])并分配给范围对象上的Value2。
  • 仍然没有足够的信息让我们看到发生了什么。请提供更多。
  • 你还需要什么?

标签: c# excel vsto


【解决方案1】:

如果你想用数据填充 ListObject,你应该将 ListObject 的 HeaderRowRange 和 DataBodyRange 设置为内容数组:

obj.HeaderRowRange.Value2 = /* Your array with table headers goes here */
obj.DataBodyRange.Value2 = /* Your array with table data goes here */

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-08
    • 2021-05-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多