Quiero convertir una página html a docx en C#, ¿cómo puedo hacerlo?Convertir Html a Docx en C#
Respuesta
El uso de ese código para convertir
Microsoft.Office.Interop.Word.Application word =
new Microsoft.Office.Interop.Word.Application();
Microsoft.Office.Interop.Word.Document wordDoc =
new Microsoft.Office.Interop.Word.Document();
Object oMissing = System.Reflection.Missing.Value;
wordDoc = word.Documents.Add(ref oMissing, ref oMissing, ref oMissing, ref oMissing);
word.Visible = false;
Object filepath = "c:\\page.html";
Object confirmconversion = System.Reflection.Missing.Value;
Object readOnly = false;
Object saveto = "c:\\doc.pdf";
Object oallowsubstitution = System.Reflection.Missing.Value;
wordDoc = word.Documents.Open(ref filepath, ref confirmconversion,
ref readOnly, ref oMissing,
ref oMissing, ref oMissing, ref oMissing, ref oMissing,
ref oMissing, ref oMissing, ref oMissing, ref oMissing,
ref oMissing, ref oMissing, ref oMissing, ref oMissing);
object fileFormat = WdSaveFormat.wdFormatPDF;
wordDoc.SaveAs(ref saveto, ref fileFormat, ref oMissing, ref oMissing, ref oMissing,
ref oMissing, ref oMissing, ref oMissing, ref oMissing, ref oMissing,
ref oMissing, ref oMissing, ref oMissing, ref oallowsubstitution, ref oMissing,
ref oMissing);
Aspose.Words for .NET es un componente comercial que le permite lograr esto.
Una muestra para [convertir el documento HTML a Word] (http://www.aspose.com/documentation/.net-components/aspose.words-for-.net/aspose.words.loadformat.html) utilizando Aspose. Las palabras para .NET también se pueden ver. –
Tuve algunos problemas con ASPOSE pasando de html a docx, como problemas de estilo y formato de imagen que parecían bastante básicos para mí y los consideraron como limitaciones del producto ... – Ariel
De acuerdo. La falta de soporte para CSS, incluso CSS incrustado, significa que tiene que formatear todas las tablas, párrafos e incluso listas usted mismo. – nullnvoid
MigraDoc puede ayudar. O usando herramientas VS para Office. O conectándose a Office a través de COM.
El OpenXML SDK le permite crear mediante programación documentos docx:
Se podría considerar el uso de altChunk. Consulte, entre otros, adding images to openxml doc created from altchunk
Si no desea confiar en Word para convertir el HTML, puede intentar docx4j-ImportXHTML para .NET; ver this walkthrough.
Puede considerar el uso de PHPDocX que ofrece una herramienta muy conveniente para convertir archivos HTML y/o cadenas de texto HTML en WordML.
Tiene un montón de opciones, entre ellas:
- puede filtrar usando selector de estilo CSS, que trozos de HTML deben pueden insertar en el documento de Word.
- Puede elegir si descargar la imagen o dejarla como enlaces externos.
- Analiza formularios HTML.
- Puede usar estilos de Word nativos para tablas y párrafos que sobrescriban el CSS original.
- Transforma anclas HTML en los marcadores de Word.
- etcétera
Yo espero que les sea útil :-)
A continuación hace lo mismo que el código de Luis, pero sólo un poco más fácil de leer y se aplica a una aplicación ASP.NET MVC:
var word = new Microsoft.Office.Interop.Word.Application();
word.Visible = false;
var filePath = Server.MapPath("~/MyFiles/Html2PdfTest.html");
var savePathPdf = Server.MapPath("~/MyFiles/Html2PdfTest.pdf");
var wordDoc = word.Documents.Open(FileName: filePath, ReadOnly: false);
wordDoc.SaveAs2(FileName: savePathPdf, FileFormat: WdSaveFormat.wdFormatPDF);
también puede guardar en otros formatos, como docx así:
var savePathDocx = Server.MapPath("~/MyFiles/Html2PdfTest.docx");
var wordDoc = word.Documents.Open(FileName: filePath, ReadOnly: false);
wordDoc.SaveAs2(FileName: savePathDocx, FileFormat: WdSaveFormat.wdFormatXMLDocument);
Recuerde llamar 'wordDoc.Close()' y 'wordDoc.Quit()' para deshacerse del objeto después, de lo contrario, quedará con instancias de palabra que se ejecuta en segundo plano. –
Mi solución usa Html2OpenXml junto con DocumentFormat.OpenXml (NuGet package for Html2OpenXml is here) para proporcionar una solución elegante para ASP.NET MVC.
WordHelper.cs
public static class WordHelper
{
public static byte[] HtmlToWord(String html)
{
const string filename = "test.docx";
if (File.Exists(filename)) File.Delete(filename);
using (MemoryStream generatedDocument = new MemoryStream())
{
using (WordprocessingDocument package = WordprocessingDocument.Create(
generatedDocument, WordprocessingDocumentType.Document))
{
MainDocumentPart mainPart = package.MainDocumentPart;
if (mainPart == null)
{
mainPart = package.AddMainDocumentPart();
new Document(new Body()).Save(mainPart);
}
HtmlConverter converter = new HtmlConverter(mainPart);
Body body = mainPart.Document.Body;
var paragraphs = converter.Parse(html);
for (int i = 0; i < paragraphs.Count; i++)
{
body.Append(paragraphs[i]);
}
mainPart.Document.Save();
}
return generatedDocument.ToArray();
}
}
}
controlador
[HttpPost]
[ValidateInput(false)]
public FileResult Demo(CkEditorViewModel viewModel)
{
return File(WordHelper.HtmlToWord(viewModel.CkEditorContent),
"application/vnd.openxmlformats-officedocument.wordprocessingml.document");
}
que estoy usando CKEditor para generar HTML para esta muestra.
Microsoft no recomienda el uso de aplicaciones de oficina en el servidor web. sin embargo, esto se puede hacer con bastante facilidad utilizando el OpenXML 2,5
Todo lo que tiene que hacer realmente se divide el HTML ("<", '>') continuación, para cada parte empujarlo hacia el detector y determinar si es una etiqueta HTML o no
Luego, para cada parte que se puede empezar a convertir el HTML a "Ejecutar" y "RunProperties" y el texto no HTML se coloca simplemente en el "texto"
Suena duro entonces que es ... y sí, no tengo idea de por qué no hay un código disponible para hacer exactamente esto.
Cosas a tener en cuenta. Los dos formatos no se convierten limpiamente entre sí, por lo que si se centra en el código más limpio posible, se encontrará con un problema en el que el formato se vuelve desordenado.
- 1. PageBreak al convertir HTML a docx y docx fromat - PHP
- 2. Convertir doc, docx, pdf a HTML usando PHP linux
- 3. Conversión de HTML a odt, doc, docx
- 4. Convertir palabra (.docx) en docbook
- 5. ¿Convertir archivos TEX a PDF o DOCX?
- 6. Convertir docx a pdf usando PHP
- 7. Convertir archivo PDF a HTML en C#
- 8. Cómo convertir HTML a MarkDown en C#?
- 9. Convertir html a doc en java
- 10. ¿Cómo convierto un .docx a html usando asp.net?
- 11. Convertir programáticamente el archivo docx al doc.
- 12. C# .net convertir HTML a RTF
- 13. ver un archivo docx en C# .NET
- 14. Convertir PDF a HTML
- 15. convertir HTML a PDF
- 16. Convertir PDF a HTML
- 17. Convertir CSS a HTML
- 18. convertir html a javascript
- 19. Convertir html web a correo electrónico Html
- 20. Cómo convertir imágenes a html?
- 21. Convertir de wiki a html
- 22. Cómo convertir HTML a BBCode
- 23. Cómo convertir HTML a XHTML?
- 24. Conversión por lotes de docx para limpiar HTML
- 25. Rieles: ¿Convertir HTML a PDF?
- 26. ¿Cómo convertir HTML a epub?
- 27. convertir html + js a exe
- 28. Java - Convertir archivo doc/docx en archivo chm
- 29. Convertir tabla html a matriz en javascript
- 30. Cómo convertir HTML a RTF en Perl?
http://stackoverflow.com/questions/32151/best-way-to-export-html-to-word-without-having-ms-word-installed –
@PranayRana, esta publicación tiene mucha más información que la uno que ha vinculado. ¿Lo has notado en absoluto? – Rahul