column - Importación de tabla HTML en Excel a través del portapapeles
td width 100 (4)
Quiero copiar datos tabulares a Excel desde mi aplicación. La forma más simple que encontré hasta ahora fue usar HTML como el formato intermediario. Después de leer esta pregunta , podría preservar el formato de mis datos. ¿Hay alguna manera de mantener el ancho de las columnas también? Traté de establecer el estilo de varias maneras:
<td style="width:100;">...</td>
<td style="width:100px;">...</td>
<td style="width:100pt;">...</td>
pero fue en vano. ¿Algunas ideas?
Para obtener puntos de bonificación, ¿hay algún lugar donde pueda encontrar una descripción del "formato" HTML de Excel?
Actualización [EDITAR]: escribí una pequeña herramienta para volcar el tipo de transferencia "Hoja de estilos XML". Este es un documento XML independiente. También contiene anchos de columna. Pero una prueba rápida muestra que Excel ignora por completo el ancho de las columnas, incluso cuando corté y pegué entre dos tablas :( Entonces, a menos que alguien me diga una opción para cambiar este comportamiento, supongo que simplemente no es posible formatear las columnas al pegar.
[EDIT2] He encontrado una manera. Después de pegar, obtienes un pequeño icono en la esquina inferior derecha que se parece al botón de pegar en la barra de herramientas. Aquí, puedes seleccionar algunas opciones. Uno es "Mantener el ancho de la tabla fuente".
Puede "ida y vuelta" de Excel a HTML y viceversa, entonces ¿por qué no crear un libro de trabajo simple en Excel y guardarlo como HTML, luego examinar los resultados?
EDITAR : elimina tonterías sobre la interceptación del evento "pegar"; Me acabo de dar cuenta de que estás en el lado de la "copia" de las cosas, no del lado "pegar".
Recomiendo el formato de hoja de cálculo XML (el antiguo 2002/2003 - más simple de generar) sobre la capacidad de Excel para importar HTML.
He hecho tanto bibliotecas escritas como para exportarlas directamente desde .NET, y es menos probable que el formato XML te haga perder sueño.
no use "estilo" ni "px", ejemplo:
<table border="1" cellpadding="5" cellspacing="0">
<tr>
<td width="100">test</td>
<td width="100">test</td>
<td width="100">test</td>
<td width="500">test</td>
</tr>
</table>
Parece un error, usar el Portapapeles no establece los Anchos de columna.
La solución (o solución) es Abrir el archivo HTML en Excel.
Aquí hay una repro:
Copie esto y péguelo en Excel:
<html><body><center>
<table border="1" cellpadding="0" cellspacing="0">
<tr>
<td width=64><strike>testing</strike></td>
<td width=64>one</td>
<td width=233>two</td>
<td width=64>three</td>
</tr>
</table></center></body></html>
¡No establece los anchos de columna!
Guarde el HTML anterior en un archivo y ábralo en Excel, los Anchos de columna están configurados correctamente.