我不确定这是一个问题,还是来自Excel的预期行为。如果这确实是预期的行为,我会很感激对正在发生的事情的解释,因为我看不到某种模式。
如果您将格式和某些值设置为某个范围,然后仅将值分配给位于第一个范围下方的另一个范围,则第一个范围的格式将部分(随机?)应用于新范围。
我的测试功能:
function getRandomInt(min, max) {
min = Math.ceil(min);
max = Math.floor(max);
return Math.floor(Math.random() * (max - min)) + min;
}
function loadSampleData(applyFormat) {
var columnCount = 30;
if (applyFormat) {
columnCount = 5;
}
var data = [];
for (var rows = 0; rows < 4; rows++) {
var row = [];
for (var columns = 0; columns < columnCount; columns++) {
var value = columns;
if (getRandomInt(1, 3) == 2) {
value = "text";
}
row.push(value);
}
data.push(row);
}
return Excel.run(function (ctx) {
var selectedRange = ctx.workbook.getSelectedRange().load(['rowCount', 'columnCount']);
var extendedRange;
return ctx.sync().then(function () {
var totalRows = data.length;
var totalColumns = data[0].length;
var deltaRows = totalRows - selectedRange.rowCount;
var deltaColumns = totalColumns - selectedRange.columnCount;
extendedRange = selectedRange.getResizedRange(deltaRows, deltaColumns);
if (applyFormat) {
extendedRange.format.fill.color = "orange";
extendedRange.format.font.color = "white";
}
else {
extendedRange.clear();
}
extendedRange.values = data;
}).then(ctx.sync)
}).catch(errorHandler);
}
步骤:
注意:
谢谢!
答案 0 :(得分:0)
令人着迷的是,我甚至可以在UI中重现这个问题,而且没有可编程性。 Excel正在进行某种模式匹配,尽管我承认我很难解读模式是什么......
我将与我们的团队讨论 - 但就具体指导而言,我认为您最安全的选择是设置值,然后清除格式。如果你想要非常小心,你甚至可以更进一步:
range.clear(Excel.ClearApplyTo.formats);
我承认这似乎是一个值得改进的工作流程。让我看看我们是否可以修复&#34;值&#34;,或者提供一种方法,让您可以一次性设置值和数字格式,并且比现在更加严格。