Замена текста-заполнителя в Excel с помощью javascript

У нас есть шаблон отчета Excel, в котором есть некоторый текст-заполнитель (ключи), который будет заменен определенными значениями при создании отчета.

мы искали везде, но не смогли найти решения с помощью javascript (я знаю, что мы можем сделать это с помощью С#/.Net, но наш проект использует AngularCLI, и манипуляция выполняется с помощью javascript).

мы видели/читали о exceljs, но все же это не соответствует этому требованию.

есть ли способ или какая-либо JS-библиотека, способная выполнить эту конкретную задачу, или нам не повезло?

Вы нашли или просмотрели JHXLSX («библиотека JavaScript, зависящая от jQuery, для загрузки или создания электронных таблиц Excel XLSX с использованием JavaScript (JSON)»). Возможно, вам будет лучше, если шаблон получит доступ к другой книге, содержащей только данные, и создаст книгу «данные» с помощью Javascript.

Richard 13.12.2020 10:28

@Richard Нет, это не может быть полезно для нас, в нашем случае мы не будем создавать шаблоны Excel, в нашем сценарии пользователи могут загружать свои собственные шаблоны Excel (для целей отчета) с переменными текстами в качестве заполнителей (человека имя, телефон, адрес .. и т. д.)

Mahamad Husen 13.12.2020 12:04
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
0
2
169
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Решением этой проблемы, которое мы реализовали, было использование docxtemplater, но мы сделали это с помощью word(docx), а не excel.

docxtemplater — это библиотека для создания документов docx/pptx из шаблон docx/pptx. Он может заменить {placeholders} данными, а также поддерживает циклы и условия. Шаблоны можно редактировать не программисты, например, ваши клиенты

Он доступен как npm: docxtemplater

пример кода взят из docs:

const PizZip = require("pizzip");
const Docxtemplater = require("docxtemplater");

const fs = require("fs");
const path = require("path");

// Load the docx file as binary content
const content = fs.readFileSync(
    path.resolve(__dirname, "input.docx"),
    "binary"
);

const zip = new PizZip(content);

const doc = new Docxtemplater(zip, {
    paragraphLoop: true,
    linebreaks: true,
});

// Render the document (Replace {first_name} by John, {last_name} by Doe, ...)
doc.render({
    first_name: "John",
    last_name: "Doe",
    phone: "0652455478",
    description: "New Website",
});

const buf = doc.getZip().generate({
    type: "nodebuffer",
    // compression: DEFLATE adds a compression step.
    // For a 50MB output document, expect 500ms additional CPU time
    compression: "DEFLATE",
});

// buf is a nodejs Buffer, you can either write it to a
// file or res.send it with express for example.
fs.writeFileSync(path.resolve(__dirname, "output.docx"), buf);

Другие вопросы по теме