Excel insiste en formatear HTML


9

Necesito copiar alrededor de 15,000 filas de datos de una consulta MS SQL a una hoja de cálculo Excel 2007. Algunas de las celdas contienen HTML como texto sin formato, y la mayoría de estas incluyen tablas HTML. Quiero que el HTML permanezca en texto plano en Excel, etiquetas y todo; pero no importa lo que haga, Excel ve las etiquetas y renderiza la tabla, lo que desordena completamente la hoja. Formatear las celdas como texto no funciona. Pegado especial> El texto no funciona. Copiar el texto de la celda individual que contiene HTML directamente en la barra de fórmulas sí funciona, pero esa no es realmente una solución factible para 15,000 filas.

Sé que es posible mantener HTML como texto sin formato porque lo logré una vez; Simplemente no recuerdo cómo. También he visto otras preguntas de personas que tienen el problema opuesto, por lo que la funcionalidad definitivamente existe.

Estoy increíblemente frustrado y agradecería profundamente su ayuda.

Editar:

@variante: pegar en el Bloc de notas y copiar el texto desde allí produce los mismos resultados que copiar los resultados de la consulta directamente. Además, los datos pegados en el Bloc de notas se delimitan con tabulaciones, y hay pestañas de sangría en el HTML, por lo que incluso si se eliminara el formato, creo que desordenaría las columnas. El texto también contiene comas, por lo que guardar como .csv tampoco ayuda. (Lo intenté)

@ Jay: Aquí hay un ejemplo del HTML, con texto irrelevante reemplazado. Perdón por el desplazamiento horizontal, ya que esta es una pregunta de formato, pensé que sería mejor pegar el texto tal como está. (Sé que las <li>etiquetas no están cerradas; en este caso no estoy preocupado por arreglar HTML incorrecto).

    <center>  <table border="1" width="400" style="border: 1 solid #808080" cellpadding="2" cellspacing="0" bordercolor="#C0C0C0">      <tr align="center">      <td bordercolor="#800000" width="100%" height="14" style="background-color:#800000;"><font color="white">Header text</font></td>      </tr>      <tr>        <td width="100%" height="14">Paragraph of text</td>      </tr>      <tr align="center">        <td bordercolor="#800000" width="100%" height="14" style="background-color:#800000;"><font color="white">More text</font></td>      </tr>      <tr>        <td width="100%" height="14">  <ul><li>Bullet point   <li>Bullet point   <li>Bullet point   <li>Bullet point   <li>Bullet point   <li>Bullet point   <li>Bullet point</ul></td>      </tr>      <tr align="center">        <td bordercolor="#800000" width="100%" height="14" style="background-color:#800000;"><font color="white">More text</font></td>      </tr>      <tr>        <td width="100%" height="14">Some final text</td>      </tr>    </table>  </center>

Es una forma un poco retrasada de hacer las cosas, pero a veces es útil filtrar las cosas a través del bloc de notas (es decir, pegarlas para eliminar los formatos y luego copiarlos desde allí) antes de colocarlos en Excel.
variante

¿Puedes ejemplos de texto que estás tratando de copiar / pegar a esta pregunta? Intenté esto: <html><head></head><body><b>bold</b></body> </html> y pude copiarlo / pegarlo de una celda a otra.
Jay Elston

@JayElston ve la actualización de Mouse a su pregunta.
studiohack

Muy viejo pero puede ser relevante para alguien: Excel puede usar consultas SQL como fuente de contenido de la celda. support.office.com/en-us/article/…
Zan Lynx

Respuestas:


3

Lo que finalmente funcionó fue reescribir la consulta SQL para agregar una tubería (|) entre todos los campos (ya que la tubería no apareció en ninguno de los textos), luego guardar los resultados en un archivo de texto e importarlos como datos delimitados por tuberías, formatear cada columna como texto en el diálogo de importación.


¡Maldita sea, eso es un PITA por solo copiar / pegar! También me he estado rascando la cabeza con esto hoy, ¡así que gracias!
franglais

0

Comprueba si tienes etiquetas inteligentes HTML. Haga clic en el botón Microsoft Office > Opciones de Excel > Revisión > Opciones de Autocorrección > Etiquetas inteligentes . Desmarque Insertar etiquetas inteligentes en este libro de trabajo . Guarde su archivo y reinicie Excel. A ver si esto ayuda.


La opción "Incrustar etiquetas inteligentes" ya no está marcada.
Ratón

0

Excel está tratando de ser útil. Tiene la etiqueta de tabla, por lo que supone que todos los valores <td> son celdas.

Antes de copiar las celdas, selecciónelas, realice una operación de Formateo de celdas (en el menú derecho del mouse) y, en la pestaña Número, seleccione texto.

No lo probé en tu cadena, pero lo probé en esta cadena:

<table><tr><td>1</td><td>2</td></tr></table>

Con el formato general, pega dos celdas con valores de 1 y 2 Con el formato establecido en texto, pega la cadena de texto completa en una sola celda.


Debería haber sido más claro al principio: estoy copiando los datos de Microsoft SQL Server Management Studio, no de Excel, por lo que no hay opciones de formato. Sin embargo, según su sugerencia, intenté pegar los datos en Excel, formateando las celdas como texto (sin cambios) y copiando y pegando las celdas recién formateadas. Aún nada. Editar: @Jay
Mouse

@ Ratón - Oh, debería haber leído tu pregunta con más cuidado. Puedo duplicar el problema de entrada de texto. Cuando pego la tabla simple anterior de un archivo de texto, pega el html sin formato. Si selecciono la celda y hago un corte o una copia y luego pego, nuevamente pega el html sin procesar. Si seleccioné el texto en la barra de fórmulas y lo copio, luego lo pego en una celda (incluso en una en la que he cambiado el formato de celda), lo pega como dos celdas separadas con los valores de celda solamente.
Jay Elston

0

Pegue el texto primero en su editor de texto. Reemplace todo por "<" y cámbielo a algún carácter no utilizado (como ^). Copie el texto y péguelo en Excel. Una vez en Excel, puede cambiar todos los ^ a <.

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.