Eu preciso gerar um arquivo para o Excel, alguns dos valores nesse arquivo contêm várias linhas.
também há texto em inglês, portanto, o arquivo deve ser Unicode.
O arquivo que estou gerando agora tem a seguinte aparência: (em UTF8, com texto não em inglês misturado e com muitas linhas)
Header1,Header2,Header3
Value1,Value2,"Value3 Line1
Value3 Line2"
Observe que o valor de várias linhas está entre aspas duplas, com uma nova linha normal do dia-a-dia.
De acordo com o que eu achei na Web, isso deveria funcionar, mas, pelo menos, não vence os arquivos do Excel 2007 e UTF8, o Excel trata a terceira linha como a segunda linha de dados e não como a segunda linha da primeira linha de dados .
Isso deve ser executado nas máquinas dos meus clientes e não tenho controle sobre a versão do Excel, portanto, preciso de uma solução que funcione com o Excel 2000 e versões posteriores.
obrigado
EDIT: "resolvi" o meu problema tendo duas opções de CSV, uma para o Excel (Unicode, tabulação separada, sem novas linhas nos campos) e uma para o resto do mundo (UTF8, CSV padrão).
Não é o que eu estava procurando, mas pelo menos funciona (até agora)
Respostas:
Você deve ter caracteres de espaço SOMENTE no início dos campos, onde os caracteres de espaço fazem parte dos dados. O Excel não removerá os espaços à esquerda. Você receberá espaços indesejados em seus cabeçalhos e campos de dados. Pior, o
"
que deveria estar "protegendo" essa quebra de linha na terceira coluna será ignorado porque não está no início do campo.Se você tiver caracteres não ASCII (codificados em UTF-8) no arquivo, deverá ter uma BOM UTF-8 (3 bytes
hex EF BB BF
) no início do arquivo. Caso contrário, o Excel interpretará os dados de acordo com a codificação padrão do código de idioma (por exemplo, cp1252) em vez de utf-8, e seus caracteres não ASCII serão descartados.Os comentários a seguir se aplicam ao Excel 2003, 2007 e 2013; não testado no Excel 2000
Se você abrir o arquivo clicando duas vezes em seu nome no Windows Explorer, tudo funcionará bem.
Se você abri-lo no Excel, os resultados variam:
As opções incluem:
fonte
EFBBBF
cabeçalho, usa0A
como separador de linha e0D0A
como nova linha dentro de cadeias de caracteres nas células de texto.Após muitos ajustes, eis uma configuração que funciona gerando arquivos no Linux, lendo no Windows + Excel, embora o formato de nova linha incorporado não esteja de acordo com o padrão :
No Perl, usei Text :: CSV para fazer o seguinte:
fonte
\n
. ObrigadoRecentemente tive um problema semelhante, resolvi-o importando um arquivo HTML , o exemplo da linha de base seria assim:
Eu sei, não é um CSV e pode funcionar de maneira diferente para várias versões do Excel, mas acho que vale a pena tentar.
Eu espero que isso ajude ;-)
fonte
É importante observar que, quando um arquivo .CSV tiver campos agrupados entre aspas duplas que contenham quebras de linha, o Excel não importará o arquivo .CSV corretamente se o arquivo .CSV for gravado no formato UTF-8. O Excel trata a quebra de linha como se fosse CR / LF e inicia uma nova linha. A planilha está ilegível. Isso parece verdade mesmo se ponto-e-vírgula forem usados como delimitadores de campo (em vez de vírgulas).
O problema pode ser resolvido usando o Bloco de notas do Windows para editar o arquivo .CSV, usando Arquivo> Salvar como ... para salvar o arquivo e, antes de salvar o arquivo, altere a codificação do arquivo de UTF-8 para ANSI. Depois que o arquivo é salvo no formato ANSI, acho que o Microsoft Excel 2013 em execução no Windows 7 Professional importará o arquivo corretamente.
fonte
A nova linha dentro de um valor parece funcionar se você usar ponto e vírgula como separador, em vez de vírgula ou tabulação, e usar aspas.
Isso funciona para mim no Excel 2010 e no Excel 2000. No entanto, surpreendentemente, funciona apenas quando você abre o arquivo como uma nova planilha, e não quando o importa para uma planilha existente usando o recurso de importação de dados.
fonte
Em um PC, o caractere ASCII nº 10 é o que você deseja colocar em uma nova linha dentro de um valor.
No entanto, depois de inseri-lo no Excel, verifique se a quebra de linha está ativada para as células com várias linhas ou se a nova linha aparecerá como uma caixa quadrada.
fonte
Isso não funcionará se você tentar importar o arquivo para o Excel.
Associe a extensão de arquivo csv ao EXCEL.EXE para poder chamar o EXCEL clicando duas vezes no arquivo csv.
Aqui, coloco algum texto seguido pelo NewLine Char seguido de mais texto E colocando a string inteira entre aspas duplas.
Não use um CR, pois o EXCEL colocará parte da string na próxima célula.
Ao invocar o EXCEL, você verá isso. Talvez você precise dimensionar automaticamente a altura para ver tudo. Onde as quebras de linha dependerá da largura da célula.
2
ENCONTRO
Aqui está o código no Basic
fonte
Eu encontrei isso e funcionou para mim
Então, onde você precisa ter coisas fechadas
.....
Então, quando você precisar escrever algo, como HTML, que inclui o "você pode fazer isso
Novas linhas terminam com
. PHP_EOL
O final do script imprime um link para que o usuário possa baixar o arquivo.
fonte
Os arquivos UTF que contêm uma BOM farão com que o Excel trate novas linhas literalmente, mesmo nesse campo, entre aspas. (Mac testado do Excel 2008)
A solução é tornar qualquer nova linha um retorno de carro (CHR 13) em vez de um avanço de linha.
fonte
Teste isto: Funciona totalmente para mim: Coloque as seguintes linhas em um
xxxx.csv
arquivoAbra com o excel.
em alguns casos, será aberto diretamente, caso contrário, será necessário usar a conversão de coluna para dados. expanda a largura da coluna e pressione o botão Quebrar texto. ou formate células e ative o texto de quebra automática.
e obrigado pelas outras sugestões, mas elas não funcionaram para mim. Estou em um ambiente puro do Windows e não queria brincar com unicode ou outra coisa engraçada.
Dessa forma, você coloca uma fórmula do csv para o excel. Pode haver muitos usos para esse método de trabalho. (observe o = antes das aspas)
pd: Em suas sugestões, coloque algumas amostras dos dados e não apenas do código.
fonte
colocar "\ r" no final de cada linha realmente teve o efeito de quebras de linha no Excel, mas no .csv ele desapareceu e deixou uma bagunça feia, onde cada linha foi comprimida contra a seguinte sem espaço e sem quebras de linha
fonte
A maneira como fazemos isso (usamos o VB.Net) é incluir o texto com novas linhas no Chr (34), que é o caractere que representa as aspas duplas e substitui todos os caracteres CR-LF por LF.
fonte
Normalmente, uma nova linha é "\ r \ n". No meu CSV, substituí "\ r" por um valor vazio. Aqui está o código em Javascript:
Quando abro o CSV no MS Excel, funcionou bem. Se um valor tiver várias linhas, ele permanecerá dentro de uma única célula na planilha do Excel.
fonte
Somente para arquivo aberto , a sintaxe é
O ponto crítico é que não há espaço após o primeiro ",". Normalmente, os espaços são bons e aparados se a sequência não estiver entre aspas. Mas por outro lado desagradável. Levei um tempo para descobrir isso.
Parece que não importa se a linha termina \ n ou \ c \ n.
Certifique-se de expandir a barra de fórmulas para poder ver o texto na célula (depois de um longo dia ...)
Agora, é claro, o File Open não suporta UTF-8 corretamente (a menos que se use truques).
Excel> Dados> Obter dados externos > Do texto
Pode ser definido no modo UTF-8 (está abaixo da lista de fontes). No entanto, nesse caso, as novas linhas parecem não funcionar e não sei como consertar isso.
(Pode-se concluir que, após 30 anos, a EM conseguiria acertar essas coisas.)
fonte
No Excel 365 ao importar o arquivo:
Dados -> Do Texto / CSV -> Selecione Arquivo> Transformar Dados -> Configuração da Fonte de Dados -> Selecione Fonte de Dados -> Clique em Editar Origem -> Na lista suspensa de quebra de linha, selecione Ignorar quebras de linha entre aspas.
O texto acima foi traduzido do português para que o texto possa ser diferente em inglês.
fonte
você pode fazer o próximo
"\"Value3 Line1 Value3 Line2\""
. Funciona para mim gerar um arquivo csv em javafonte
Aqui está uma abordagem interessante usando JavaScript ...
fonte
Imprimir uma nova linha HTML
<br/>
no conteúdo e abrir no excel funcionará bem em qualquer excelfonte
Você pode usar o atalho de teclado ALT + Enter.
fonte