如何使用 VSTO 删除 Excel 中的 table 但保留注释?

How to delete table in Excel but preserve comments using VSTO?

我正在使用下面的代码片段将包含数据的 Excel 范围转换为 table。在某些情况下,我需要删除 table,但保留单元格中的注释。有什么办法可以实现吗?另外,有没有办法切换 headers on/off?我尝试了 XlListObjectHasHeaders: Microsoft.Office.Interop.Excel.XlYesNoGuess. 下的不同选项,但这些都不起作用。感谢您的帮助。

finalRange.Worksheet.ListObjects.AddEx(
SourceType: Microsoft.Office.Interop.Excel.XlListObjectSourceType.xlSrcRange,
Source: finalRange,
XlListObjectHasHeaders: Microsoft.Office.Interop.Excel.XlYesNoGuess.xlYes);

我删除了这样的table结构-

finalRange.Worksheet.ListObjects.Item[1].Delete();

编辑(多个 tables 的解决方案):

        foreach (var table in sheet.ListObjects)
        {
            Microsoft.Office.Interop.Excel.ListObject tempObj = (Microsoft.Office.Interop.Excel.ListObject)table;
            Microsoft.Office.Interop.Excel.Range tempRange = tempObj.Range;
            tempRange.ClearContents();        
        }

这些都假定您的 Table 变量是 lo:

Excel.ListObject lo = ws.ListObjects["Table1"];

要在 Excel table 中隐藏 header 行:

lo.ShowHeaders = false;

要删除 table 但保留注释,请使用 range.Clear 方法而不是 table.Delete

Excel.Range tableRange = lo.Range;
tableRange.ClearContents();