如何使用 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();
我正在使用下面的代码片段将包含数据的 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();