1/ Does WE8ISO8859P1 contains/supports portuguese characters?
2/ Does your Windows a portuguese one?
3/ Does your Oracle NLS_LANG on Windows set to portuguese characters?
4/ If you spool the result in a file and open it with wordpad, do you see portuguese characters?
5/ What is the result on your server side?

Application is displaying the portuguese characters properly. But when i spool the output and open it in wordpad it is showing only junk characters other than portuguese characters.

My windows is not a portuguese one.

My windows NLS_LANG was set to AMERICAN_AMERICA.WE8ISO8859P1

Server side also it is not displaying the characters properly. To view this properly, first i will prepare a .csv and converting this in excel through get external data option and selecting File Origin as MS-DOS (PC-8). After doing this, i am able to view portuguese character in Excel.

This means that your original client application was using PC-8 character set but had its NLS_LANG set to WE8ISO8859P1.
As long as you use the same application with the same wrong setting there is no problem but as soon as you set the correct NLS_LANG parameter then problem appears.

You have to unload the whole data in a PC-8 client but setting NLS_LANG to 8859P1, then change NLS_LANG to the correct setting and reload the database.