2017-04-26 5 views
0

Excel 추가 기능을 통해 테이블에서 일부 행을 제거하려고합니다. 내가 사용하고있는 코드는 다음과 같습니다 : 이것은 인터넷 익스플로러 (11)를 포함하여 엑셀 온라인에서 잘 작동Excel 추가 기능 행 인덱스 및 값이 정의되지 않은 형식으로 반환됩니다.

  var table = ctx.workbook.tables.getItem('TableName'); 

      if (Office.context.requirements.isSetSupported('ExcelApi', 1.2) === true) { 
       table.clearFilters(); 
      } 

      var tableRows = table.rows.load('items'); 

      ctx.sync().then(function() { 
       for (var i = (tableRows.count - 1); i >= 0; i -= 1) { 
        var row = tableRows.getItemAt(tableRows.items[i].index); 
        row.delete(); 
       } 
      }); 

또한 그것은 버전 1601와 함께 작동 (6741.2088 빌드) 이상. 그러나 버전 1509 (빌드 4266.1001)에서는 작동하지 않습니다. 이 버전에서는 행 항목의 값과 인덱스가 정의되지 않은 것으로 표시됩니다. 이 문제를 어떻게 해결할 수 있습니까?

답변

1

빌드 번호가 어떤 차이가 있는지 나는 잘 모르겠지만 TableRow API는 부서지기 쉬운 API 중 하나입니다 (그리고 우리는이를 수정하는 방법을 찾고 있습니다). 본질적으로 getItemAt을 수행하면 시점 인 인덱스를 기반으로 참조를 만들고이 행은 새 행이 추가되거나 삭제 될 때 조정되지 않습니다.

즉, 삭제/삽입의 경우 테이블 행 컬렉션을 무효화해야하거나 Range 개체를 대신 사용하는 것처럼 처리합니다. 이 문은 TableRow/TableRowCollection 개체에만 적용되며 워크 시트 컬렉션과 같은 다른 컬렉션은 올바르게 조정됩니다.