【问题标题】:Replacing an Excel connection range with an Add-In用加载项替换 Excel 连接范围
【发布时间】:2012-10-04 18:53:16
【问题描述】:

我对自己编写的 Excel 加载项做了一些噩梦。客户工作簿曾经是从 SQL 连接填充的,并且围绕命名表等设置了大量公式。我正在尝试使用来自 WCF 服务的数据填充连接填充的一些相同的表(使用现有的页眉和页脚)同时保持格式和公式(即:不破坏任何东西)。

获取数据很好。我遇到的问题是:被替换的数据可能比命名范围中当前存在的数据更多或更少。我似乎找不到删除现有行并用我的新数据替换它们并将命名范围调整为新数据的方法。

非常感谢。

Range range = activeWorksheet.get_Range("Name", MissingValue);
range.Clear();
object[,] data = new object[result.Length, 26];
range.get_Resize(result.Length, 26);
... fill data....
range.Value2 = data;   

【问题讨论】:

  • 您能否举例说明您正在使用的数据,以及电子表格的外观?
  • 不幸的是实际数据是敏感的,但问题不在于数据。它归结为清除命名范围并填充它,并确保命名范围的大小适合新数据。

标签: c# excel vsto


【解决方案1】:

好的,用下面的代码设法解决了。还删除了阻止格式被删除的“range.Clear()”调用。

 Range range = activeWorksheet.get_Range("Name", MissingValue);
 int totalMissingRows = 0;
            if (range.Rows.Count < result.Length)
            {
                totalMissingRows = result.Length - range.Rows.Count;
                for (int i = 0, l = totalMissingRows; i < l; i++)
                {

                    Excel.Range rng = range;
                    rng = (Excel.Range)rng.Cells[rng.Rows.Count, 1];
                    rng = rng.EntireRow;
                    rng.Insert(Excel.XlInsertShiftDirection.xlShiftDown, MissingValue);
                }
            }

            //delete extra lines
            //remove left over data
            for (int i = result.Length, l = range.Rows.Count; i < l; i++) { range.Cells[range.Rows.Count, 1].EntireRow.Delete(null); }

【讨论】:

    【解决方案2】:

    既然你已经得到了一个数据数组,为什么不直接把它写到excel中呢:
    int startRow, startCol;
    var startCell = (Range)worksheet.Cells[startRow, startCol];
    var endCell = (Range)worksheet.Cells[startRow + result.Length, startCol + 26];
    var writeRange = worksheet.get_Range(startCell, endCell);
    writeRange.Value2 = data;

    在这里,我根据您的问题使用了数组的长度,数据是二维数据数组。

    【讨论】:

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