Principalmente quando falamos de gerenciadores de conteúdo.
O .net fornece classes para que se implemente um corretor ortográfico idêntico ao do word (para não dizer que é o mesmo corretor) em suas aplicações com um esforço mínimo de codificação.
Segue o código para implementar o corretor:
'Instância do objeto Word
Dim objWord As New Microsoft.Office.Interop.Word.ApplicationClass()
'Cria um documento em branco
objWord.Documents.Add()
'Adiciona o texto no novo documento em branco
objWord.Selection.TypeText(Me.txtTeste.Text)
'Aciona a ação de verificação ortográfica
objWord.Documents.Item(objWord.Documents.Count).CheckSpelling()
'Retorna o texto corrigido para o textbox
txtTeste.Text = objWord.Documents.Item(objWord.Documents.Count).Content.Text
'Fecha o documento sem salvar as alterações no documento em branco que foi criado
objWord.Documents.Close(Microsoft.Office.Interop.Word.WdSaveOptions.wdDoNotSaveChanges)
'Fecha a instância do word
objWord.Quit()
'Destrói o objeto word
objWord = Nothing
É importante adicionar a referência às bibliotecas do Word
Add Reference > COM > Microsoft Word 12.0 Object Library
E importar o namespace.
Imports Microsoft.Office.Interop.Word
Com isso, seu corretor está implementado.
Veja um print da tela.
update:
Versão em C#
Microsoft.Office.Interop.Word.ApplicationClass objWord = new Microsoft.Office.Interop.Word.ApplicationClass();
//Cria um documento em branco
objWord.Documents.Add();
//Adiciona o texto no novo documento em branco
objWord.Selection.TypeText(this.txtTeste.Text);
//Aciona a ação de verificação ortográfica
objWord.Documents.Item(objWord.Documents.Count).CheckSpelling();
//Retorna o texto corrigido para o textbox
txtTeste.Text = objWord.Documents.Item(objWord.Documents.Count).Content.Text;
//Fecha o documento sem salvar as alterações no documento em branco que foi criado
objWord.Documents.Close(Microsoft.Office.Interop.Word.WdSaveOptions.wdDoNotSaveChanges);
//Fecha a instância do word
objWord.Quit();
//Destrói o objeto word
objWord = null;
Existe a possibilidade de disponibilizar esse código para c# ?
ResponderExcluiragradeço desde já.
Olá,
ResponderExcluirVocê pode converter o código utilizando o site abaixo:
www(ponto)developerfusion(ponto)com/tools/convert/vb-to-csharp/
abraços!
tentei usar aqui e não rolou... ao executar o CheckSpelling nada ocorre e a execução passa para a próxima linha. Nenhum erro mas nada ocorre.
ResponderExcluirComo fazer para especificar qual dicionário queremos usar?
Olá, todas as referências foram devidamente adicionadas?
ResponderExcluirAbraços!
Não funciona talvez com o office 2003 funcioava, mas com o 2007 ele não faz nada, simplesmente ignora só na linha
ResponderExcluirobjWord.Quit()
que ele dá uma piscada aparecendo um word sem nada se fechando.
No Windows 7 a janela abre por traz de tudo!! tem algum jeito de contornar este problema?
ResponderExcluirConsegui replicar este comportamento na minha máquina, mas ainda não descobri uma solução para este comportamento no windows 7.
ExcluirAssim que descobrir, publico aqui no blog!
Abraços!
E outra... isso funciona localmente, mas como usar isso online?
ResponderExcluirMarquito,
ExcluirConsigo usar esse recurso online sem problemas. Mas meu servidor possui o word instalado. É possível que essa solução dependa da instalação do word. Nunca testei em ambientes que não possuam o word. Vale o teste.
Abraços!
Rafael , acho que estou com problema de permissão , pois quando executo pelo servidor do visual studio o exemplo acima funciona corretamente, porem quando hospedo no IIS ele não abre a tela para corrigir as palavras.
ResponderExcluirSabe o que possa ser?
Ola Paulo,
ExcluirVerifique se o servidor onde o IIS se encontra possui o word instalado.
É possível que haja dependência da instalação do Word (ou de alguma DLL relacionado a ele).
Conforme disse em um comentário anterior, todos os meus testes foram realizados em servidores que possuem o word.
Abraços!
Olá, estou desenvolvendo um programa para lecionar inglês e gostaria que o corretor fizesse a correção em inglês... Só que ao mudar o idioma do corretor ele não muda nada, e volta para o português. Tem alguma propriedade que eu possa mudar para que o corretor corrija em inglês direto?
ResponderExcluirOlá Mary,
ExcluirExperimente definir as propriedades de idioma(Culture, UICulture...) da sua aplicação para inglês(en-US).
Não consegui converter para c# alguem conseguiu e poderia me mostrar ou enviar?
ResponderExcluirnão consegui converter para c# alguem conseguiu e poderia passar?
ResponderExcluir