这可能很容易,但此刻它逃脱了我。我根据一些新发现对问题进行了重写。
我在Excel加载项中广泛使用了二维值数组,以提高原始速度。
我使用扩展方法提取单元格数组并对其进行修改,然后将值重新放回。
// Get all cells in the worksheet - this is a formatted table including headings
Range range = worksheet.UsedRange;
// Get all values as a 2D array
object[,] cells = range.GetCellArray();
... // do things to the array
// Assign the entire array back to worksheet, but table formatting is erased
Range.Value = cells;
表格格式仅由数组赋值删除。这就是删除了指定的表ListObject
条目。
答案 0 :(得分:1)
可能有更好的方法,但我的第一个想法是将数组输出到临时表,然后复制输出和Paste Special - >值仅在您想要的范围内。最后,删除临时表。
答案 1 :(得分:1)
事实证明,如果替换格式化表格的标题行的单元格,则会完全丢失该表格。
解决方案是只替换标题下的行。
// Get all cells in the worksheet - this is a formatted table including headings
Range range = worksheet.UsedRange;
// Get all values as a 2D array
object[,] cells = range.GetCellArray();
... // do things to the array
// Assign the entire array MINUS THE HEADING ROW, back to worksheet
cells = cells.SubArray(2, 1, cells.RowCount() - 1, cells.ColumnCount());
EXCEL.Range targetRange = worksheet.GetRange(1, 2, cells.ColumnCount(), cells.RowCount());
targetRange.Value = cells;
SubArray
,GetRange
,RowCount
和ColumnCount
方法都是我之前创建的扩展方法,但您可以从他们的名称和示例中了解他们的所作所为