Created
November 10, 2022 15:08
-
-
Save nanjixiong218/37314246696b2a5bb305a0b0f8544e92 to your computer and use it in GitHub Desktop.
孟影工作表,多列数据转为行向下copy
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: My_Copy | |
description: 孟影工作表,多列数据转为行向下copy | |
host: EXCEL | |
api_set: {} | |
script: | |
content: | | |
$("#run").click(() => tryCatch(run)); | |
async function run() { | |
await Excel.run(async (context) => { | |
const sheet = context.workbook.worksheets.getActiveWorksheet(); | |
const allData = sheet.getUsedRange(); | |
allData.load("columnCount"); | |
allData.load("rowCount"); | |
await context.sync(); | |
console.log("列数: ", allData.columnCount); | |
console.log("行数: ", allData.rowCount); | |
const colNums = allData.columnCount; | |
const rowNums = allData.rowCount; | |
const colStep = 4; | |
const rowStep = rowNums - 1; | |
let firstCol = sheet.getRangeByIndexes(1, 0, rowStep, 1); | |
for (let i = 1; 1 + i * 4 < colNums; i++) { | |
let startCol = 1 + i * 4; | |
let copyRange = sheet.getRangeByIndexes(1, startCol, rowStep, colStep); | |
let startRow = i * rowStep + 1; | |
let targetRange = sheet.getRangeByIndexes(startRow, 1, rowStep, colStep); | |
// copy 每类统计的内容 | |
copyRange.load("values"); | |
targetRange.load("values"); | |
// 重复copy第一列 | |
let targetFirstCol = sheet.getRangeByIndexes(startRow, 0, rowStep, 1); | |
firstCol.load("values"); | |
targetFirstCol.load("values"); | |
await context.sync(); | |
targetRange.values = copyRange.values; | |
targetFirstCol.values = firstCol.values; | |
} | |
await context.sync(); | |
}); | |
} | |
/** Default helper for invoking an action and handling errors. */ | |
async function tryCatch(callback) { | |
try { | |
await callback(); | |
} catch (error) { | |
// Note: In a production add-in, you'd want to notify the user through your add-in's UI. | |
console.error(error); | |
} | |
} | |
language: typescript | |
template: | |
content: |- | |
<button id="run" class="ms-Button"> | |
<span class="ms-Button-label">启动copy</span> | |
</button> | |
language: html | |
style: | |
content: |- | |
section.samples { | |
margin-top: 20px; | |
} | |
section.samples .ms-Button, section.setup .ms-Button { | |
display: block; | |
margin-bottom: 5px; | |
margin-left: 20px; | |
min-width: 80px; | |
} | |
language: css | |
libraries: | | |
https://appsforoffice.microsoft.com/lib/1/hosted/office.js | |
@types/office-js | |
[email protected]/dist/css/fabric.min.css | |
[email protected]/dist/css/fabric.components.min.css | |
[email protected]/client/core.min.js | |
@types/core-js | |
[email protected] | |
@types/[email protected] |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment