Qual é a melhor maneira de preencher um modelo do Word 2007 em C #?
Pergunta
Eu tenho uma necessidade para preencher um documento do Word 2007 a partir do código, incluindo repetir seções da tabela - atualmente utilizo uma transformação XML na parte document.xml do docx, mas isso é extremamente demorado para configuração (cada vez que você editar o documento de modelo, você tem que recriar o arquivo transform.xsl, o que pode levar até um dia para fazer para documentos complexos).
Existe alguma maneira melhor, de preferência um que não exigem que você Executar Word 2007 durante o processo?
Saudações Richard
Solução
Eu mesmo tentei escrever algum código para o efeito, mas desistiu. Agora eu uso um produto 3o partido: Aspose Palavras e estou muito feliz com esse componente.
Ele não precisa de Microsoft Word na máquina.
"Aspose.Words permite que aplicativos .NET e Java para ler, modificar e gravar documentos Word® sem utilizar Microsoft Word®."
"Aspose.Words suporta uma grande variedade de recursos, incluindo a criação de documentos, conteúdos e manipulação de formatação, habilidades de mala direta poderosos, suporte abrangente de DOC, OOXML, RTF, WordprocessingML, HTML, OpenDocument e PDF. Aspose. palavras é verdadeiramente o mais acessível, mais rápido e apresentam componente rico Palavra no mercado ".
AVISO LEGAL :. Eu não sou afiliado com a empresa
Outras dicas
Uma vez que um arquivo DOCX é simplesmente um arquivo ZIP que contém uma estrutura de pastas com imagens e arquivos XML, você deve ser capaz de manipular esses arquivos XML usando nossa API favorito manipulação XML. A especificação do formato é conhecido como WordprocessingML , parte do Office Open XML .
Eu pensei que eu iria falar dele no caso do terceiro ferramenta partido sugerido por splattne não é uma opção.
Você considerou usando o Open XML SDK da Microsoft? A única dependência é em .NET 3.5.
Documentação: http://msdn.microsoft.com/en-us/library /bb448854%28office.14%29.aspx
Download: http://www.microsoft .com / download / details.aspx? familyid = C6E744E5-36E9-45F5-8D8C-331DF206E0D0 & displaylang = en
Use invoke docx lib. ele suporta os dados da tabela ( http://invoke.co.nz/products/help/docx_tables .aspx ). Mais informações em http://invoke.co.nz/products/docx.aspx
Você considerou usando VB? Você poderia criar um assembly separado para preencher o documento.
Eu sei que você está procurando uma solução C #, mas o apoio literal XML é uma área onde o apoio literal XML poderia ajudá-lo a preencher o documento. Criar um documento no Word para o servidor como um modelo, descompacte o docx, cole a seção de XML relevantes que você deseja alterar em você código VB, e adicionar código para preencher as partes que deseja alterar. É difícil dizer a partir de sua descrição, se isso iria atender às suas necessidades, mas gostaria de sugerir a olhar para ele.