Как изменить цвет ячейки в эксель/excel/xlsx/



  • Добрый день. Нашел на форуме, как производить запись данных в ячейку, но как при этом покрасить её в нужный цвет, так и не понял.

    Вариант пробовал вот такой:

    cell.style("fill", {
        type: "pattern",
        pattern: "darkDown",
        foreground: {
            rgb: "ff0000"
        },
        background: {
            theme: 3,
            tint: 0.4
        }
    });
    

    И вот такой:

    cell.style("fill", "0000ff");
     
    const fill = cell.style("fill");
    /*
    fill is now set to:
    {
        type: "solid",
        color: {
            rgb: "0000ff"
        }
    }
    */
    

    И такой:

    const RichText = require('xlsx-Populate').RichText;
    const cell = workbook.sheet(0).cell("A1");
    // set a cell value to rich text
    cell.value(new RichText());
     
    // add two rich text fragments
    cell.value()
        .add('hello ', { italic: true, bold: true })
        .add('world!', { fontColor: 'FF0000' });
    

    Пробовал по разному, и прописывал пути к ячейке, и много ещё чего добавлял, удалял, но в итоге всегда получаю либо ошибку: ReferenceError: workbook is not defined
    Либо ошибку: ReferenceError: cell is not defined
    Отсюда вопрос:
    Как в кубик nod.js, прописать код так, что бы разукрасить отдельную ячейку, с определенным текстом, либо текст я добавлю потом, если при этом форматирование не сотрется.
    Хотелось бы увидеть пример полного когда, который в кубике должен быть.
    Спасибо заранее!



  • @green1987 Удалось самому решить вопрос.
    для тек, кому нужно будет это, размещу пример кода, в котором показано как разукрасить фон ячейки.
    Вариант 1 - сплошная заливка фона ячейки + пример занесения данных в ячейку, шрифтами, различного стиля, и цвета:

    const XlsxPopulate = require('xlsx-populate');
     
    
    // Load a new blank workbook
    XlsxPopulate.fromBlankAsync()
        .then(workbook => {
    
    
    // цвет
    const RichText = require('xlsx-Populate').RichText;
    const cell = workbook.sheet(0).cell('A1');
    // set a cell value to rich text
    cell.value(new RichText());
    
    cell.style("fill", "0000ff");
     
    const fill = cell.style("fill");
     
    // add two rich text fragments
    cell.value()
        .add('hello ', { italic: true, bold: true })
        .add('world!', { fontColor: 'FF0000' });
        // цвет
    
            // Modify the workbook.
            workbook.sheet("Sheet1").cell("B1").value("This is neat!");
    
    
    
            // Write to file.
            return workbook.toFileAsync("C:/content/out.xlsx");
    
        });
    

    Вариант 2 - штрихованный фон ячейки + пример занесения данных в ячейку, шрифтами, различного стиля, и цвета:

    const XlsxPopulate = require('xlsx-populate');
     
    
    // Load a new blank workbook
    XlsxPopulate.fromBlankAsync()
        .then(workbook => {
    
    
    // цвет
    const RichText = require('xlsx-Populate').RichText;
    const cell = workbook.sheet(0).cell('A1');
    // set a cell value to rich text
    cell.value(new RichText());
    
    cell.style("fill", {
        type: "pattern",
        pattern: "darkDown",
        foreground: {
            rgb: "ff0000"
        },
        background: {
            theme: 3,
            tint: 0.4
        }
    });
     
    // add two rich text fragments
    cell.value()
        .add('hello ', { italic: true, bold: true })
        .add('world!', { fontColor: 'FF0000' });
        // цвет
    
            // Modify the workbook.
            workbook.sheet("Sheet1").cell("B1").value("This is neat!");
    
    
    
            // Write to file.
            return workbook.toFileAsync("C:/content/out.xlsx");
    
        });
    

Log in to reply