2011-08-02 15 views
10

Estoy utilizando consultas web de Excel para exportar una tabla html (vista mvc) para sobresalir. ¿Cómo lo hago para llevar a través de los estilos CSS? Si configuro class="redLabel", no interpreto eso y hago que la etiqueta se ponga roja. Tengo que usar estilos en línea en mi mesa para que esto funcione. ¿Algunas ideas?Exportar tabla HTML para sobresalir y mantener estilos CSS

Respuesta

6

Hasta donde yo sé, la mayoría de los programas de Office NO son compatibles con el estilo incluido, sino solo con el estilo en línea.

Es probable que deba incluir su estilo en línea (la exportación es una mierda, casi como el estilo del correo).

2

Excel hace de soporte usando el estilo CSS, pero sólo si hay una clase sobre el elemento. Si hay varias clases, no tendrá ningún estilo en el elemento, consulte CSS style class not combining in Excel

Dicho esto, este es el código que armé para obtener todos los estilos en una página y exportar una tabla HTML. Es una fuerza bruta, agarra todo, pero probablemente podrías emparejarlo si conoces los detalles. La función devuelve una jQuery Promise. De eso puedes hacer lo que sea con el resultado.

function excelExportHtml(table, includeCss) { 

    if (includeCss) { 
     var styles = []; 

     //grab all styles defined on the page 
     $("style").each(function (index, domEle) { 
      styles.push($(domEle).html()); 
     }); 

     //grab all styles referenced by stylesheet links on the page 
     var ajaxCalls = []; 
     $("[rel=stylesheet]").each(function() { 
      ajaxCalls.push($.get(this.href, '', function (data) { 
       styles.push(data); 
      })); 
     }); 

     return $.when.apply(null, ajaxCalls) 
       .then(function() { 
        return "<html><style type='text/css'>" + styles.join("\n") + "</style>\n" + table.outerHTML + "</html>"; 
       }); 
    } 
    else { 
     return $.when({ owcHtml: table.outerHTML }) 
       .then(function (result) { 
        return "<html>" + result.owcHtml + "</html>"; 
       }); 
    } 
} 
1

Puede exportar la tabla con el estilo css exterior. Aquí está mi solución declarar una plantilla de documento:

var e = this; 
var style = "<style></style"; //You can write css or get content of .css file 

e.template = { 
      head: "<html xmlns:o=\"urn:schemas-microsoft-com:office:office\" xmlns:x=\"urn:schemas-microsoft-com:office:excel\" xmlns=\"http://www.w3.org/TR/REC-html40\"><head><!--[if gte mso 9]><xml><x:ExcelWorkbook><x:ExcelWorksheets>", 
      sheet: { 
       head: "<x:ExcelWorksheet><x:Name>", 
       tail: "</x:Name><x:WorksheetOptions><x:DisplayGridlines/></x:WorksheetOptions></x:ExcelWorksheet>" 
      }, 
      mid: "</x:ExcelWorksheets></x:ExcelWorkbook></xml><![endif]-->>"+style+"</head><body>", 
      table: { 
       head: "<table>", 
       tail: "</table>" 
      }, 
      foot: "</body></html>" 
     }; 
Cuestiones relacionadas