So I made a script that fills a single cell in an existing file and then saves it as a new file.
Original file:

After the script:

But if the desired cell already shared styles with other cells, they all will be filled.
Original file:

After the script:

To be more clear: using exeljs cell.fill property, changes the fill on the cell and all the other cells in the worksheet that have the style shared. Is this the case? File created with Excel might have these internal shared styles (I suspect format painter is one of the ways to have shared styles).
Javascript heavily relies on references, and all objects are passed around and assigned as references. To decouple the styles, need to clone objects to break the references. exceljs does not do that for you, and documentation does not mention that it might happen. Also, cloning in javascript is not a simple task (there is no standard way to do that which is suitable for all edge cases).
I solved it this way:
var cell = worksheet.getCell('A1'); // get the cell
cell.style = Object.create(cell.style); // shallow-clone the style, break references
cell.fill = {type: 'pattern', pattern:'solid', fgColor:{argb:'FFFFFF00'}}; // set yellow background
My use case was to open existing file and update cells with errors and then save. I was having same problems until i found this issue and solution by @ilya-payrange.
But i still was having problem of colors changing on other cells or sheets.
What worked for me was to call the code on all cells in the sheet while looping the rows.
cell.style = Object.create(cell.style);
Then set your custom style and it will not apply to other cells or columns.
Note, this approach will bloat the file, because each and every cell would have its own style.
Only on a very large file is this likely to have a noticeable impact.
The problem seems to happen most often when the sheet data has been setup as a table using "Format as Table".
I noticed that problem does not happen if entire sheet is formatted as "Normal". but this has a negative affect on Date value cells. So the only solution that worked was to force each and every cell to have a cloned style.
Most helpful comment
To be more clear: using exeljs cell.fill property, changes the fill on the cell and all the other cells in the worksheet that have the style shared. Is this the case? File created with Excel might have these internal shared styles (I suspect format painter is one of the ways to have shared styles).
Javascript heavily relies on references, and all objects are passed around and assigned as references. To decouple the styles, need to clone objects to break the references. exceljs does not do that for you, and documentation does not mention that it might happen. Also, cloning in javascript is not a simple task (there is no standard way to do that which is suitable for all edge cases).
I solved it this way: