gpt4 book ai didi

c# - 添加后 ListObject 包含额外的标题

转载 作者:行者123 更新时间:2023-12-04 20:35:02 24 4
gpt4 key购买 nike

我从 D3 单元格开始在工作表上添加一个新的 ListObject,然后创建列并将它们与 XMLMap 绑定(bind)。这是我的代码:

            Excel.Worksheet sheet = _workbook.Sheets["Data1"];
sheet.Activate();
sheet.get_Range("D3").Select();

var xmlMap = _workbook
.XmlMaps
.Add(collectionDatablock.GetSchema(), NetworkTree.RootName);
xmlMap.Name = collectionDatablock.Name;

var listObject = sheet
.ListObjects
.Cast<Excel.ListObject>()
.SingleOrDefault(l => l.Name == "ListName");

listObject?.Delete();
listObject = sheet.ListObjects.Add();

listObject.Name = "ListName";

var column = listObject
.ListColumns
.Cast<Excel.ListColumn>()
.First();

SetColumn(column, xmlMap, "Col1", "/Root/Region/@UniqueName");
var newColumn = listObject.ListColumns.Add();
SetColumn(newColumn, xmlMap, f, solution, "Col2", "/Root/Region/@Code");

和 SetColumn 方法:
    private void SetColumn(Excel.ListColumn column, Excel.XmlMap map, string header, string path)
{
column.Name = GetColumnCaption(header);
column.XPath.SetValue(map, path);
}

此代码在空工作表上按预期工作,但如果表格上方有任何数据(例如 D2 单元格有值),则列表向上移动,D2 成为表格的左上角!此外,如果 D1、D2 和 E2 单元格有值,则会生成一个额外的表格列,称为“Column2”。似乎 Excel 尝试将表格上方范围内的所有数据包含到 ListObject 中。如何预防?

最佳答案

原来我必须同时指定 DestinationSource参数指向相同的范围。

var tableCell = sheet.get_Range("D3");
listObject = sheet.ListObjects.Add(SourceType: Excel.XlListObjectSourceType.xlSrcRange, Source: tableCell, Destination: tableCell, XlListObjectHasHeaders: Excel.XlYesNoGuess.xlNo);

关于c# - 添加后 ListObject 包含额外的标题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43645854/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com