2009-04-29 15 views
5

Estoy intentando exportar el contenido de la página HTML a Word.Problema al escribir contenido HTML en documento de Word en ASP.NET

página de visualización

Mi HTML es:

  1. ¿Cuál es su color favorito?

NA

  1. Lista de la escuela superior de tres?

uno Nacional dos Devs tres PS

y un botón para el evento de clic. El evento de clic de botón abrirá MS Word y pegará el contenido de la página en word.

La página de palabras contiene la propiedad de tabla de la página de diseño html. Se produce solo en Word 2003. Pero en Word 2007, el documento de Word contiene el texto sin propiedad de tabla. ¿Cómo puedo eliminar esta propiedad de la tabla en Word 2003.

No puedo agregar las instantáneas. De lo contrario, te dejaré en claro.

Estoy diseñando la página web de aspx. Estoy exportando el contenido de la página web con el siguiente código.

protected void Button1_Click(object sender, EventArgs e) 
{ 

    Response.ContentEncoding = System.Text.Encoding.UTF7; 
    System.Text.StringBuilder SB = new System.Text.StringBuilder(); 
    System.IO.StringWriter SW = new System.IO.StringWriter(); 
    System.Web.UI.HtmlTextWriter htmlTW = new System.Web.UI.HtmlTextWriter(SW); 
    tbl.RenderControl(htmlTW); 
    string strBody = "<html>" + 
     "<body>" + "<div><b>" + htmlTW.InnerWriter.ToString() + "</b></div>" + 
     "</body>" + 
     "</html>"; 

    Response.AppendHeader("Content-Type", "application/msword"); 
    Response.AppendHeader("Content-disposition", "attachment; filename=" + fileName); 
    Response.ContentEncoding = System.Text.Encoding.UTF7; 

    string fileName1 = "C://Temp/Excel" + DateTime.Now.Millisecond.ToString(); 
    BinaryWriter writer = new BinaryWriter(File.Open(fileName1, FileMode.Create)); 
    writer.Write(strBody); 
    writer.Close(); 
    FileStream fs = new FileStream(fileName1, FileMode.Open, FileAccess.Read); 
    byte[] renderedBytes; 
    // Create a byte array of file stream length 
    renderedBytes = new byte[fs.Length]; 
    //Read block of bytes from stream into the byte array 
    fs.Read(renderedBytes, 0, System.Convert.ToInt32(fs.Length)); 
    //Close the File Stream 
    fs.Close(); 
    FileInfo TheFile = new FileInfo(fileName1); 
    if (TheFile.Exists) 
    { 
     File.Delete(fileName1); 
    } 
    Response.BinaryWrite(renderedBytes); 

    Response.Flush(); 
    Response.End(); 
} 
+0

Es muy difícil entender lo que está haciendo o lo que es su problema. Intenta editar la pregunta para que podamos entender lo que intentas lograr. ¡Gracias! – splattne

+0

No puedo agregar instantáneas. Perdón por decir esto. ¿Me puede decir que lo son todas las informaciones que necesita más para entender –

+0

Trato de adivinar lo que está haciendo: agarrar una página web utilizando un programa en C# (aplicación de Windows). ¿Luego lo "exporta" a un documento de Word? ¿O estás hablando de una aplicación ASP.NET? No está claro. – splattne

Respuesta

1

Estás escribiendo HTML, afirmando que es del tipo de contenido "application/msword", a continuación, esperando lo mejor ..

Hay más "correcta" formas de alcanzar su objetivo

Existen algunos proyectos para convertir (X) HTML a contenido de WordML, de los cuales docx4j-ImportXHTML.NET es uno. Divulgación: lo mantengo; puede encontrar enlaces a otras partes en StackOverflow.

Alternativamente, se puede utilizar el mecanismo de altChunk de Word, aunque tenga en cuenta:

  • usted tiene menos control sobre cómo se realiza la importación;
  • AltChunk no es compatible con Word 2003 (incluso con el paquete de compatibilidad).
0

Por lo que entiendo, está tratando de crear un documento de ms palabras sobre la marcha y está teniendo dificultades cuando la salida se ve en Word 2003 frente a 2007.

En el código anterior, son simplemente escupiendo html y obligándolo a ser un documento de MS Word. Me sorprende que incluso funcione.

En cambio, es posible que desee utilizar Office interoperabilidad (Microsoft.Office.Interop.Word) o instalar docx utilizando Nuget. Mire algunos ejemplos en línea, busque "C# create word doc".

Cuestiones relacionadas