with open(filename, "w", encoding="cp1251", newline="") as file:
и тогда всё будет хорошо, либо использовать utf8 with BOM и тогде тоже всё открывается в MS Office Excel, но в таком случае при последующей работе CSV могут возникнуть проблемы с первым байтом, но это уже другая история.