一个寻找一种方法来获得特定列的名称从几个表。我的数据来自几个工作表不同数量的列多达38列,所以我不能使用getColumnById
。我只需要7列从这个。
首先我把所有的工作表范围转换成表格,然后我得到所有的表格。我想要的是得到特定的列的名称和合并到一个新的工作表上的所有表格。
我遵循了文档中的示例,但在获取每个表的列名时遇到了麻烦。
我知道我的标题值,如下例所示。
function main(workbook: ExcelScript.Workbook) {
let sheets = workbook.getWorksheets();
for (let sheet of sheets) {
sheet.getTables()[0].convertToRange();
sheet.addTable(sheet.getRange('A1').getUsedRange().getAddress(),true)
}
workbook.getWorksheet('Combined')?.delete();
const newSheet = workbook.addWorksheet('Combined');
const tables = workbook.getTables();
const headerValues = [['Column1', 'Column6', 'Column8', 'Column9','Column11', 'Column16', 'Column18', 'Column19']];
const targetRange = newSheet.getRange('A1').getResizedRange(headerValues.length - 1, headerValues[0].length - 1);
targetRange.setValues(headerValues);
const combinedTable = newSheet.addTable(targetRange.getAddress(), true);
for (let table of tables) {
let dataValues = table.getColumnByName( // this where am stuck //).getRangeBetweenHeaderAndTotal().getTexts();
let rowCount = table.getRowCount();
// If the table is not empty, add its rows to the combined table.
if (rowCount > 0) {
combinedTable.addRows(-1, dataValues);
}
}
}
谢谢你的帮助乔治
1条答案
按热度按时间wgx48brx1#
几件事:
1.在大多数情况下,我建议迭代一组特定的表对象。不幸的是,这在这里很难做到。每次您取消链接并重新创建一个新表时,Excel可能会给您的表一个新名称。这使得使用该表很困难。您可以在代码中通过以下方法解决此问题:在取消链接之前捕获表名称,取消链接该表,重新创建该表,并将表名设置为最初捕获的表名。如果您采用这种方法,则可以可靠地使用表名
1.因为在这个场景中,表名可能有点复杂,所以我将使用工作表名,以便可以处理包含基础表的工作表。这将允许我们使用表并从表中获取数据,而不管表在工作表中的名称是什么。
请看下面的代码: