#office-js
#office-js
Вопрос:
С помощью office js api вы можете скопировать диапазон ячеек в другой диапазон ячеек и сохранить все значения, формулы и форматы, используя код, который выглядит примерно так:
sheet.getRange(“A1”).copyFrom("M9:R424");
Я хочу дублировать эту функциональность, но вместо того, чтобы сохранять значения, формулы и форматы ячеек в файле Excel, я хотел бы сохранить их в файле json (в базе данных вне приложения), чтобы я мог динамически создавать таблицы с диапазонами / ячейками по мере необходимости, чтобы уменьшить размер файла Excel и убедиться, что пользователи случайно не редактируют диапазоны шаблонов.
До сих пор мне удавалось копировать значения и формулы из json, но у меня возникли проблемы с форматами. Из диапазона можно получить объект format:
range.format
Но когда я конвертирую этот формат в json с помощью:
range.format.toJSON()
Не хватает значительного количества параметров (например, цвета заливки ячейки, контура границы).
Кто-нибудь знает более оптимальный способ преобразования форматов диапазона в json или для хранения и репликации этих данных?
Ответ №1:
У нас есть классы RangeFill и RangeBorderCollection, вы могли бы использовать toJSON()
API для получения цвета заливки ячейки и цвета границы.
await Excel.run(async (context) => {
var range = context.workbook.getActiveCell();
range.format.fill.load();
range.format.borders.load();
await context.sync();
var JSON = range.format.fill.toJSON();
var JSON2 = range.format.borders.toJSON();
console.log(JSON);
console.log(JSON2);
});
Комментарии:
1. Я думаю, что это поможет мне двигаться в правильном направлении, так что спасибо за это. Можете ли вы опубликовать фрагмент кода с примером использования API toJSON()? Всякий раз, когда я использую его, я получаю пустой объект, так что я, очевидно, делаю что-то неправильно. Кроме того, есть ли способ получить все эти свойства за один прогон, а не вызывать их по отдельности? Спасибо!
2. Я подготовлю его для вас в начале следующей недели
3. Спасибо! Я ценю ваше время!
4. Я просто обновляю пример кода. спасибо за напоминание