Quando abro um arquivo csv clicando duas vezes nele, ele abre e, como seria de esperar, exibe os dados em uma grande variedade de células com uma faixa de opções de formatação na parte superior (área de transferência, fonte, alinhamento, etc.), como um arquivo Excel.
Quando abro o mesmo csv no VSCode, vejo o que parece mais um arquivo de texto simples, algo assim:
Sr,S,V
67,30,-7
27,80,123
200,15,300
84,78,135
151,25,167
-1,98,148
51,87,120
Minha pergunta é: o que "cria" toda a funcionalidade de formatação no primeiro caso? Como tudo isso é programado?
Primeiro, observe que se você aplicar formatação (fonte, alinhamento, etc.) e salvá-la novamente em CSV, sua formatação não será salva. Você pode ver que CSV é apenas um texto separado por vírgulas (daí o nome do formato - Valores Separados por Vírgula). Não há lugar para colocar a formatação.
Então, a única diferença são as células. O Excel divide o arquivo em células automaticamente, procurando vírgulas e finais de linha. Ele também “interpreta” os dados, determinando formatos de números, datas, texto, etc. (por exemplo, por padrão, números e datas são alinhados à direita e o texto à esquerda). Ele faz isso porque é um processador de tabelas e foi projetado para funcionar com tabelas. O VSCode não possui essa funcionalidade, ele exibe apenas o texto simples.
Ou seja, o Excel converte CSV para seu formato nativo na memória, permitindo total funcionalidade.
Você pode salvar a tabela com formatação em outro formato de arquivo, por exemplo XLSX, que é muito mais complexo que CSV e possui local para salvar a formatação. Internamente é um arquivo ZIP que contém documentos XML (podendo conter outros arquivos, por exemplo, se você inserir uma imagem em sua tabela, ela será armazenada no arquivo ZIP em seu formato nativo). Se estiver interessado, você pode descompactá-lo e estudar seu conteúdo.