Xls nativo - remover apóstrofo!
Moderador: Moderadores
Xls nativo - remover apóstrofo!
Boa tarde!
Uso o Xharbour 1.2.1 e há muito crio XLS nativamente com ele. Para isso, utilizo de um exemplo que acho ter baixado por aqui, onde não necessito de nenhuma ferramenta adicional.
Porém, me deparei com um problema: preciso que o XLS criado seja importado em um outro sistema. O arquivo é carregado normalmente, tanto no Excel como no LibreOffice, porém rejeitado por esse outro sistema.
Após analisar, percebi que os campos numéricos tem um apóstrofo (') no início dele, o que impede a importação do mesmo.
Segue em anexo o exemplo que uso e foto do "danado" do apóstrofo que está impedindo tal importação.
Desde já, agradeço caso alguém possa me dar uma ideia de como remover o apóstrofo e continuar a exportar nativamente meu arquivo XLS.
Att,
Ceb
Uso o Xharbour 1.2.1 e há muito crio XLS nativamente com ele. Para isso, utilizo de um exemplo que acho ter baixado por aqui, onde não necessito de nenhuma ferramenta adicional.
Porém, me deparei com um problema: preciso que o XLS criado seja importado em um outro sistema. O arquivo é carregado normalmente, tanto no Excel como no LibreOffice, porém rejeitado por esse outro sistema.
Após analisar, percebi que os campos numéricos tem um apóstrofo (') no início dele, o que impede a importação do mesmo.
Segue em anexo o exemplo que uso e foto do "danado" do apóstrofo que está impedindo tal importação.
Desde já, agradeço caso alguém possa me dar uma ideia de como remover o apóstrofo e continuar a exportar nativamente meu arquivo XLS.
Att,
Ceb
- Anexos
-
xls.rar- (2.57 KiB) Baixado 401 vezes
- Itamar M. Lins Jr.
- Administrador

- Mensagens: 7928
- Registrado em: 30 Mai 2007 11:31
- Localização: Ilheus Bahia
- Curtiu: 1 vez
Xls nativo - remover apóstrofo!
Olá!
Faltou o XLS do outro sistema ou os dados a serem importados.
Quem está gerando ele com apostrofo ?
Olhei e o array no exemplo é numérico.
O XLS é gerado Ok e o outro sistema coloca o apostrofo quando importa ?
Saudações,
Itamar M. Lins Jr.
Faltou o XLS do outro sistema ou os dados a serem importados.
Quem está gerando ele com apostrofo ?
Olhei e o array no exemplo é numérico.
O XLS é gerado Ok e o outro sistema coloca o apostrofo quando importa ?
Saudações,
Itamar M. Lins Jr.
Saudações,
Itamar M. Lins Jr.
Itamar M. Lins Jr.
Xls nativo - remover apóstrofo!
Ei Itamar, obrigado por responder.
O arquivo pedido.xls é gerado pelo programa xls.prg que anexei anteriormente.
Quando tento importar o pedido.xls no outro sistema, acusa erro e aborta. Daí, tenho que abrir o pedido.xls e remover os apóstrofos, salvar e só então consigo importá-lo no outro sistema.
Segue o arquivo pedido.xls gerado pelo xls.prg que contem o apóstrofo.
Desde já, muito grato pela ajuda.
Att,
Ceb
O arquivo pedido.xls é gerado pelo programa xls.prg que anexei anteriormente.
Quando tento importar o pedido.xls no outro sistema, acusa erro e aborta. Daí, tenho que abrir o pedido.xls e remover os apóstrofos, salvar e só então consigo importá-lo no outro sistema.
Segue o arquivo pedido.xls gerado pelo xls.prg que contem o apóstrofo.
Desde já, muito grato pela ajuda.
Att,
Ceb
- Anexos
-
pedido.xls- (203 Bytes) Baixado 259 vezes
- Itamar M. Lins Jr.
- Administrador

- Mensagens: 7928
- Registrado em: 30 Mai 2007 11:31
- Localização: Ilheus Bahia
- Curtiu: 1 vez
Xls nativo - remover apóstrofo!
Olá!
Abri aqui pelo LibreOffice no Linux e está ok. Pq vc salva o XLS em X versão do excel. Precisa saber qual versão do excel o "outro sistema" vai importar.
Saudações,
Itamar M. Lins Jr.
O problema é saber como o "outro sistema" trabalha.Quando tento importar o pedido.xls no outro sistema, acusa erro e aborta.
Abri aqui pelo LibreOffice no Linux e está ok. Pq vc salva o XLS em X versão do excel. Precisa saber qual versão do excel o "outro sistema" vai importar.
Saudações,
Itamar M. Lins Jr.
Saudações,
Itamar M. Lins Jr.
Itamar M. Lins Jr.
Xls nativo - remover apóstrofo!
Itamar, boa noite!
O sistema de pedido eletrônico de uma distribuidora de medicamentos importa arquivo gerado no Excel 2007, 2013 e no online, importa até se for criado no LibreOffice!
O problema é que o arquivo gerado em xHarbour pelo programa xls.prg tem um apóstrofo (') na frente dos campos numéricos. Daí, o sistema da distribuidora não importa de nenhuma versão, a não ser que o apóstrofo seja removido.
Conforme sua imagem, o arquivo é aberto normalmente tanto no Excel como no LibreOffice, porém tem o apóstrofo! Se vc clicar F2 no campo ele tbm aparece. Testa aí por favor.
Eu preciso alterar o xls.prg e o xls.ch para gerar campo numérico sem o "danado" do apóstrofo (') na frente.
Att,
Ceb.
O sistema de pedido eletrônico de uma distribuidora de medicamentos importa arquivo gerado no Excel 2007, 2013 e no online, importa até se for criado no LibreOffice!
O problema é que o arquivo gerado em xHarbour pelo programa xls.prg tem um apóstrofo (') na frente dos campos numéricos. Daí, o sistema da distribuidora não importa de nenhuma versão, a não ser que o apóstrofo seja removido.
Conforme sua imagem, o arquivo é aberto normalmente tanto no Excel como no LibreOffice, porém tem o apóstrofo! Se vc clicar F2 no campo ele tbm aparece. Testa aí por favor.
Eu preciso alterar o xls.prg e o xls.ch para gerar campo numérico sem o "danado" do apóstrofo (') na frente.
Att,
Ceb.
- Itamar M. Lins Jr.
- Administrador

- Mensagens: 7928
- Registrado em: 30 Mai 2007 11:31
- Localização: Ilheus Bahia
- Curtiu: 1 vez
Xls nativo - remover apóstrofo!
Olá!
Agora entendi.
Olhei aqui. Os sistemas(LibeOffice/Excel) detectam se é numero ou letra e quando é numero coloca o apostrofo.
Se colocar:
Será que vai ler ?
Se colocar uma letra na frente do numero não aparece também.
Saudações,
Itamar M. Lins Jr.
Agora entendi.
Olhei aqui. Os sistemas(LibeOffice/Excel) detectam se é numero ou letra e quando é numero coloca o apostrofo.
Se colocar:
Código: Selecionar todos
' "900" 'Se colocar uma letra na frente do numero não aparece também.
Saudações,
Itamar M. Lins Jr.
Saudações,
Itamar M. Lins Jr.
Itamar M. Lins Jr.
- Itamar M. Lins Jr.
- Administrador

- Mensagens: 7928
- Registrado em: 30 Mai 2007 11:31
- Localização: Ilheus Bahia
- Curtiu: 1 vez
Xls nativo - remover apóstrofo!
Olá!
É um problema comum, veja.
https://pt.extendoffice.com/documents/e ... he.html#a3
Isso é o excel que coloca mesmo, quando abre o XLS (BIFF)
Acho que achei aqui a solução... testando...
Saudações,
Itamar M. Lins Jr.
É um problema comum, veja.
https://pt.extendoffice.com/documents/e ... he.html#a3
Isso é o excel que coloca mesmo, quando abre o XLS (BIFF)
Acho que achei aqui a solução... testando...
Saudações,
Itamar M. Lins Jr.
Saudações,
Itamar M. Lins Jr.
Itamar M. Lins Jr.
- Itamar M. Lins Jr.
- Administrador

- Mensagens: 7928
- Registrado em: 30 Mai 2007 11:31
- Localização: Ilheus Bahia
- Curtiu: 1 vez
Xls nativo - remover apóstrofo!
Olá!
Mais um macete para importar para o excel.
Não precisa de nada, apenas criar o arquivo dessa forma:
O formato padrão achei na internet com mais firulas, deixar aqui guardado.
Salvar com a extensão .XLS
Esse outro cabeçalho do Itaú.
Saudações,
Itamar M. Lins Jr.
Mais um macete para importar para o excel.
Não precisa de nada, apenas criar o arquivo dessa forma:
Código: Selecionar todos
Function main
Local nHandle
nHandle := FCREATE("pedido.xls")
FWRITE(nHandle,"<HTML><BODY><table>")
FWRITE(nHandle,"<tr><th>barra</th><th>qtd</th></tr>")
FWRITE(nHandle,"<tr><td>17123876123</td><td>1</td></tr>")
FWRITE(nHandle,"<tr><td>76313123987</td><td>1</td></tr>")
FWRITE(nHandle,"</table></body></html>")
FCLOSE(nHandle)
Código: Selecionar todos
<html xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:x="urn:schemas-microsoft-com:office:excel" xmlns="http://www.w3.org/TR/REC-html40">
<head>
<meta http-equiv="Content-Type" content="text/html; chairset=windows-1252">
<!--[if gte mso 9]><xml> <x:ExcelWorkbook> <x:ExcelWorksheets> <x:ExcelWorksheet> <x:Name>Sheet1</x:Name> <x:WorksheetOptions> <x:Selected/> <x:Panes> <x:Pane> <x:Number>3</x:Number> <x:ActiveRow>3</x:ActiveRow> </x:Pane> </x:Panes> <x:ProtectContents>False</x:ProtectContents> <x:ProtectObjects>False</x:ProtectObjects> <x:ProtectScenairios>False</x:ProtectScenairios> </x:WorksheetOptions> </x:ExcelWorksheet> </x:ExcelWorksheets> </x:ExcelWorkbook> </xml><![endif]-->
</head>
<body>
<table x:str>
<tr>
<td x:num width=64>1</td>
</tr>
<tr>
<td x:num>2</td>
</tr>
<tr>
<td x:num>3</td>
</tr>
</table>
</body>
</html> Esse outro cabeçalho do Itaú.
Código: Selecionar todos
<html xmlns:x="urn:schemas-microsoft-com:office:excel" xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office"
xmlns="http://www.w3.org/TR/REC-html40">Itamar M. Lins Jr.
Saudações,
Itamar M. Lins Jr.
Itamar M. Lins Jr.
- Itamar M. Lins Jr.
- Administrador

- Mensagens: 7928
- Registrado em: 30 Mai 2007 11:31
- Localização: Ilheus Bahia
- Curtiu: 1 vez
Xls nativo - remover apóstrofo!
Olá!
exemplo de XML do excel. Importa direto para o Libreoffice e Excel.
Se for abrir pelo LibreOffice salvar .XLS e no Excel salvar com XML.
Saudações,
Itamar M. Lins Jr.
exemplo de XML do excel. Importa direto para o Libreoffice e Excel.
Código: Selecionar todos
<?xml version="1.0" encoding="utf-8"?>
<Workbook
xmlns="urn:schemas-microsoft-com:office:spreadsheet"
xmlns:msxsl="urn:schemas-microsoft-com:xslt"
xmlns:user="urn:my-scripts"
xmlns:o="urn:schemas-microsoft-com:office:office"
xmlns:x="urn:schemas-microsoft-com:office:excel"
xmlns:ss="urn:schemas-microsoft-com:office:spreadsheet">
<Worksheet ss:Name="Testing Data">
<Table>
<Row>
<Cell>
<Data ss:Type="String">Barra</Data>
</Cell>
<Cell>
<Data ss:Type="String">Quantidade</Data>
</Cell>
</Row>
<Row>
<Cell>
<Data ss:Type="Number">129812981212</Data>
</Cell>
<Cell>
<Data ss:Type="Number">1</Data>
</Cell>
</Row>
<Row>
<Cell>
<Data ss:Type="Number">234812981212</Data>
</Cell>
<Cell>
<Data ss:Type="Number">5</Data>
</Cell>
</Row>
</Table>
</Worksheet>
</Workbook>Saudações,
Itamar M. Lins Jr.
Saudações,
Itamar M. Lins Jr.
Itamar M. Lins Jr.
Xls nativo - remover apóstrofo!
Itamar, bom dia!
Testei suas sugestões, mas continuo na dependência do Excel ou Libreoffice. Assim, já até faço gerando um CSV. Mas o que realmente queria é gerar pelo xls.prg sem o apóstrofo, pq aí sim eu não teria dependência do Excel/LibreOffice.
Conforme sua sugestão, usando o xls.prg, coloquei na frente do código de barras a letra B, ficando assim: B7891058021580. Assim gerou sem o apóstrofo ('). Agora preciso remover esse B do arquivo gerado, pedido.xls. Tentei MemoRead + StrTran + MemoWrit, até removeu, mas corrompeu o arquivo.
Segue o arquivo pedido.xls original e o pedidoA.xls (alterado pelo MemoRead + StrTran + MemoWrit). Segue tbm print comparando a estrutura de ambos.
Sem mais, agradeço.
Att,
Ceb
Testei suas sugestões, mas continuo na dependência do Excel ou Libreoffice. Assim, já até faço gerando um CSV. Mas o que realmente queria é gerar pelo xls.prg sem o apóstrofo, pq aí sim eu não teria dependência do Excel/LibreOffice.
Conforme sua sugestão, usando o xls.prg, coloquei na frente do código de barras a letra B, ficando assim: B7891058021580. Assim gerou sem o apóstrofo ('). Agora preciso remover esse B do arquivo gerado, pedido.xls. Tentei MemoRead + StrTran + MemoWrit, até removeu, mas corrompeu o arquivo.
Segue o arquivo pedido.xls original e o pedidoA.xls (alterado pelo MemoRead + StrTran + MemoWrit). Segue tbm print comparando a estrutura de ambos.
Sem mais, agradeço.
Att,
Ceb
- Anexos
-
pedidos.rar- (409 Bytes) Baixado 206 vezes
-
Kapiaba
- Colaborador

- Mensagens: 1908
- Registrado em: 07 Dez 2012 16:14
- Localização: São Paulo
- Contato:
Xls nativo - remover apóstrofo!
Ola, tente assim:
Abs.
Código: Selecionar todos
#Include "FiveWin.ch"
FUNCTION PrintDosForWin()
LOCAL cTexto := ""
LOCAL ON_GRANDE := CHR(27) + CHR(33) + CHR(16) // Para Impresoras Epson
LOCAL OFF_GRANDE := CHR(27) + CHR(33) + CHR(01) // Para Impresoras Epson
LOCAL cPrinter := GetDefaultPrinter() // Seleciona la Impresora Por Defecto de Windows
//LOCAL CRLF := CHR(13) + CHR(10)
LOCAL cFileName := "TEXTO.PRN"
cTexto += "Esta es la primera linea del texto" + CRLF
cTexto += Replicate( "*-", 20 ) + CRLF
cTexto += ON_GRANDE + "LETRAS GRANDES" + OFF_GRANDE + CRLF
cTexto += "Esta es otra linea de texto..." + CRLF
cTexto += PADL( "Izquierza", 40 ) + CRLF
cTexto += PADC( "CENTRALIZADO", 40 ) + CRLF
cTexto += PADR( "Derecha", 40 ) + CRLF
cTexto += PADC( "< Linea Final >", 40, "-" ) + CRLF
If WriteStream( cFileName, cTexto )
// Envia la Impresion al Spool de Windows
// PrintFileRaw( cPrinter, cFileName, "Impresion En Formato DOS desde Windows" )
WinExec( "Notepad.exe " + cFileName )
FERASE( cFileName )
EndIF
RETURN NIL
// Esta Funcion la encontre por ahi...
FUNCTION WriteStream( cFile, cStream )
LOCAL nHandle := FCreate( cFile )
IF FError() <> 0
RETURN( .F. )
ENDIF
FWrite( nHandle, cStream, Len(cStream) )
FClose( nHandle )
RETURN ( FError() == 0 )
- Itamar M. Lins Jr.
- Administrador

- Mensagens: 7928
- Registrado em: 30 Mai 2007 11:31
- Localização: Ilheus Bahia
- Curtiu: 1 vez
Xls nativo - remover apóstrofo!
Olá!
Quem coloca o apostrofo é o Excel, que coloca nos campos tratando como texto.
Se mexer no arquivo, altera os cálculos e danifica o XLS.
Precisa procurar na internet o modelo adequado para gerar o XLS com campos numéricos, data, currency, etc.
Saudações,
Itamar M. Lins Jr.
Quem coloca o apostrofo é o Excel, que coloca nos campos tratando como texto.
Se mexer no arquivo, altera os cálculos e danifica o XLS.
Precisa procurar na internet o modelo adequado para gerar o XLS com campos numéricos, data, currency, etc.
Saudações,
Itamar M. Lins Jr.
Saudações,
Itamar M. Lins Jr.
Itamar M. Lins Jr.
- Jairo Maia
- Moderador
- Mensagens: 2785
- Registrado em: 16 Ago 2010 13:46
- Localização: Campinas-SP
Xls nativo - remover apóstrofo!
Fazendo o teste com o arquivo da sugestão do Itamar, com a letra "B" na frente, dessa forma deu pra remover o "B" e o arquivo abriu. Usei FCreate(), FOpen() e FWrite() porque não altera o formato do arquivo, enquanto MemoRead() e MemoWrit() quando salvam salvam no formato OEM. Deu certo, veja se ajuda:
Compilar usando: HBMK2 Teste.Prg xhb.hbc
Em Tempo: Assim também funcionou (com Hb_MemoRead() e Hb_MemoWrit():
Compilar usando: HBMK2 Teste.Prg xhb.hbc
Código: Selecionar todos
#include "FileIO.Ch"
nNewFile := FCreate( "Pedido1.Xls" ) // cria o arquivo a salvar o conteúdo alterado
nHadler := FOPEN( "Pedido.Xls", 2 ) // abre o arquivo no modo leitura e gravação
nFileSize := FSeek( nHadler, 0, FS_END ) // pega tamanho do arquivo
FSeek( nHadler, 0, FS_SET ) // reposiciona o cursor no inicio do arquivo
cBuffer := Space( nFileSize ) // define o tamanho de cBuffer
FREAD( nHadler, @cBuffer, nFileSize ) // carrega o arquivo em cBuffer
cBuffer := StrTran( cBuffer, [B789], " 789" ) // remove o B por um espaço (não altera o LEN do arquivo)
FWRITE( nNewFile, cBuffer, nFileSize ) // grava o novo arquivo
FClose( nNewFile ) // fecha os Handlers...
FCLOSE( nHadler )Código: Selecionar todos
cBuffer := Hb_MemoRead( "Pedido.Xls" )
cBuffer := StrTran( cBuffer, [B789], " 789" ) // remove o B por um espaço (não altera o LEN do arquivo)
Hb_MemoWrit( "Pedido1.Xls", cBuffer )Abraços, Jairo
Harbour / Clipper 5.2e - Blinker 7
(Não respondo dúvidas por MP ou E-mail. Por favor, não encaminhe via mensagem privada ou e-mail, dúvidas que podem ser compartilhadas com todos no fórum)
Harbour / Clipper 5.2e - Blinker 7
(Não respondo dúvidas por MP ou E-mail. Por favor, não encaminhe via mensagem privada ou e-mail, dúvidas que podem ser compartilhadas com todos no fórum)
-
gilbertosilverio
- Usuário Nível 3

- Mensagens: 339
- Registrado em: 18 Jan 2009 10:39
- Localização: Ribeirao Pires - SP
Xls nativo - remover apóstrofo!
Ola Amigos,
Gero meus relatórios no excel desta maneira, simplesmente salvo o arquivo DBF como XLS, e ate hoje funciona que e uma maravilha...
Gero meus relatórios no excel desta maneira, simplesmente salvo o arquivo DBF como XLS, e ate hoje funciona que e uma maravilha...
Código: Selecionar todos
FUNCTION EXCEL_EXPEDICAO()
PRIVATE ARQ, aARQ:={}, cName, oBAR, cOldDrive, cOldPath, NOVODIR, oBAR
X_SAVEPATH()
MONTA_NA_TELA()
IF EMPTY(cNAME)
X_RESTOREPATH()
RETURN NIL
ENDIF
ARQ:=NOVODIR+RETIRABRANCO(alltrim(cName))+[.xls]
TITULO:={ [N_NFe],[RAZAO],[Cidade],[Bairro],[CEP],[Volume],[Valor],[Obser],[OK] }
aAdd(aARQ, { TITULO[1] , "C", 10,0 } )
aAdd(aARQ, { TITULO[2] , "C", 20,0 } )
aAdd(aARQ, { TITULO[3] , "C", 20,0 } )
aAdd(aARQ, { TITULO[4] , "C", 20,0 } )
aAdd(aARQ, { TITULO[5] , "C", 10,0 } )
aAdd(aARQ, { TITULO[6] , "C", 10,0 } )
aAdd(aARQ, { TITULO[7] , "N", 12,2 } )
aAdd(aARQ, { TITULO[8] , "C", 40,0 } )
aAdd(aARQ, { TITULO[9] , "C", 04,0 } )
DBCREATE( ARQ, aArq, [DBFNTX], .T. )
CLOSE DATA
USE &ARQ NEW EXCLUSIVE
C:=1 ; CONTA:=0
oBar:=HProgressBar():NewBox( "Imprimindo, "+lTrim(strZERO(C,6))+" De "+lTrim(strZERO(LEN(aNFE_MOTO),6))+" Registro(s)",,,350,,LEN(aNFE_MOTO))
DO WHILE C <= LEN(aNFE_MOTO)
DBAPPEND()
REPLACE N_NFE WITH aNFE_MOTO[C,1]
REPLACE RAZAO WITH SUBSTR(aNFE_MOTO[C,6],1,20)
REPLACE CIDADE WITH SUBSTR(aNFE_MOTO[C,7],1,20)
REPLACE BAIRRO WITH SUBSTR(aNFE_MOTO[C,8],1,20)
REPLACE CEP WITH aNFE_MOTO[C,9]
REPLACE VOLUME WITH aNFE_MOTO[C,4]
REPLACE VALOR WITH VAL(aNFE_MOTO[C,2])
REPLACE OBSER WITH SUBSTR(aNFE_MOTO[C,3],1,40)
REPLACE OK WITH SUBSTR(aNFE_MOTO[C,10],1,4)
C++
oBar:Step("Imprimindo, "+lTrim(strzero(C,6))+" De "+lTrim(Strzero(len(aNFE_MOTO),6))+" Registro(s)")
ENDDO
oBar:CLOSE()
X_RESTOREPATH()
Hwg_Msginfo( [Arquivo salvo em: ]+CRLF+CRLF+arq, [Aviso do sistema] ) //= c:\usuario\desktop\nomedoarquivo.xls
RETURN( nil )
FUNCTION MONTA_NA_TELA()
cName := [Rel_]+SUBSTR(TIME(),1,2)+[_]+SUBSTR(TIME(),4,2)+[_]+SUBSTR(TIME(),7,2)
NovoDir := GetDesktopFolder()+[\]
RETURN NIL
Function GetDesktopFolder()
local objShell, GetDesktopFolder
objShell := CreateObject("WScript.Shell")
GetDesktopFolder := objShell:SpecialFolders:Item("Desktop")
objShell := nil
RETURN GetDesktopFolder
GilbertoSilverio
gilbertosilverio@gmail.com
gilbertosilverio2003@yahoo.com.br
gilbertosilverio@gmail.com
gilbertosilverio2003@yahoo.com.br
- Itamar M. Lins Jr.
- Administrador

- Mensagens: 7928
- Registrado em: 30 Mai 2007 11:31
- Localização: Ilheus Bahia
- Curtiu: 1 vez
Xls nativo - remover apóstrofo!
Olá!
Ai acredito que o Jairo resolveu a questão, mas gostei dessa forma também.
Saudações,
Itamar M. Lins Jr.
.
Tem algumas maneiras, mas não é o excel que vai ler, é o tal programa dele lá.Gero meus relatórios no excel desta maneira, simplesmente salvo o arquivo DBF como XLS, e ate hoje funciona que e uma maravilha...
Ai acredito que o Jairo resolveu a questão, mas gostei dessa forma também.
Saudações,
Itamar M. Lins Jr.
.
Saudações,
Itamar M. Lins Jr.
Itamar M. Lins Jr.
